[PATCH v2 0/1] readelf: invalid error message triggered when last tag is an empty string
Matthieu Longo
matthieu.longo@arm.com
Thu Jun 19 08:43:54 GMT 2025
** Disclaimer: **
This issue cannot occur with Object Attributes v1 (OAv1) because a value of '\0' (empty string) for a tag with a string value is considered as the default value for the attribute, and consequently is eliminated from the output object during the serialization.
## Content
An empty string is a valid value for a NTBS tag in both OAv1 and OAv2 [1] cases. However, contrarily to OAv1, a OAv2 subsection can be required and so, tags in this subsection might have to be present even if the value is the default. To comply with this requirement, the OAv2 serializer won't drop the default values.
In the case where a NTBS tag has for value '\0' and is last in the object attributes section, the current code in readelf used for dumping the object attributes incorrectly detects an overflow, and prints out an error message for a corrupted string tag.
This patch fixes the detection of the overflow so that it now accept an empty string in the last tag of the object attributes section.
## Testing
Today, no test can be added since the bug cannot be triggered in the context of OAv1. This fix was tested in the context of OAv2's patch series [1] that will add tests to cover this specific use case.
Tested on arm-none-eabi on master, and aarch64-elf-none in context of [1], and no regression found.
## Reference
[1]: https://inbox.sourceware.org/binutils/20250509151319.88725-1-matthieu.longo@arm.com/
Matthieu Longo (1):
readelf: invalid error message triggered when last tag is an empty string
binutils/readelf.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
--
2.50.0
More information about the Binutils
mailing list