[PATCH v3 2/2] readelf: invalid error message triggered when last tag is an empty string

Jan Beulich jbeulich@suse.com
Tue Jun 24 10:01:53 GMT 2025


On 24.06.2025 11:01, Matthieu Longo wrote:
> Disclaimer: this issue cannot occur with Object Attributes v1 (OAv1) while
> using the GNU binutils 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 by gas from the output object file during
> the serialization.
> 
> 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 the 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.
> 
> It also fixes the previous tests for the empty NTBS case and the non-null
> terminated string one. The fix was also tested in the context of OAv2's
> patch series [1] where the issue was originally detected. No regression
> was found.
> 
> [1]: https://inbox.sourceware.org/binutils/20250509151319.88725-1-matthieu
>      .longo@arm.com/
> ---
>  binutils/readelf.c                                      | 8 ++++++--

Okay as far as this goes.

>  gas/testsuite/gas/arm/attr-empty-string.d               | 1 -
>  gas/testsuite/gas/arm/attr-non-null-terminated-string.d | 2 +-

These will want an Arm maintainer's approval.

Jan


More information about the Binutils mailing list