[PATCH v1 1/1] readelf: invalid error message triggered when last tag is an empty string
Jan Beulich
jbeulich@suse.com
Wed Jun 18 10:42:52 GMT 2025
On 18.06.2025 12:27, Matthieu Longo wrote:
> 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.
>
> In the context of OAv2 [1], an empty string is a valid value for a string
> attribute tag, and can be saved as a tag might not have a default value.
Is there a word (or more) missing in the latter part of this sentence?
> --- a/binutils/readelf.c
> +++ b/binutils/readelf.c
> @@ -17779,12 +17779,14 @@ display_tag_value (signed int tag,
> else if (tag & 1)
> {
> /* PR 17531 file: 027-19978-0.004. */
> - size_t maxlen = (end - p) - 1;
> + size_t maxlen = end - p;
>
> putchar ('"');
> if (maxlen > 0)
> {
> - print_symbol_name ((int) maxlen, (const char *) p);
> + maxlen -= 1; /* Remove \0 from the character count. */
How do you know it's \0 that sits there?
> + if (maxlen > 0) /* Don't try to print an empty string. */
> + print_symbol_name ((int) maxlen, (const char *) p);
Am I understanding correctly that for OAv2 this will then need further
modifying, as (if I understand the description correctly) an empty
string there is not the same as no tag at all.
Jan
More information about the Binutils
mailing list