[PATCH 1/2] elf: Consume hex arguments in _dl_exception_create_format length pass

Florian Weimer fweimer@redhat.com
Mon Sep 28 13:15:49 GMT 2026


* Adhemerval Zanella:

> The problem was latent, where the only existing caller that uses a hex
> conversion (the static TLS exhaustion message in
> _dl_allocate_static_tls) places %zx last.
>
> Consume the argument for each hex conversion, and add tests with a %s
> after %x, %lx and %zx.
>
> Checked on x86_64-linux-gnu, powerpc-linux-gnu, powerpc64-linux-gnu,
> and powerpc64le-linux-gnu.
> ---
>  elf/dl-exception.c       | 2 ++
>  elf/tst-create_format1.c | 5 +++++
>  2 files changed, 7 insertions(+)
>
> diff --git a/elf/dl-exception.c b/elf/dl-exception.c
> index 392c7b4b2d1..d7034e71e56 100644
> --- a/elf/dl-exception.c
> +++ b/elf/dl-exception.c
> @@ -130,12 +130,14 @@ _dl_exception_create_format (struct dl_exception *exception, const char *objname
>  	    case 'z':
>  	      if (p[1] == 'x')
>  		{
> +		  va_arg (ap, unsigned long int);
>  		  length += LONG_WIDTH / 4;
>  		  ++p;
>  		  break;
>  		}
>  	      [[fallthrough]];
>  	    case 'x':
> +	      va_arg (ap, unsigned int);
>  	      length += INT_WIDTH / 4;
>  	      break;
>              default:
> diff --git a/elf/tst-create_format1.c b/elf/tst-create_format1.c
> index 3190c7b579c..14ce8ea5a5e 100644
> --- a/elf/tst-create_format1.c
> +++ b/elf/tst-create_format1.c
> @@ -90,6 +90,11 @@ do_test (void)
>    TEST_LONG ("fffffffe",      "test", "%zx",      (size_t)~1ul);
>    TEST_LONG ("fffffffe-test", "test", "%zx-test", (size_t)~1ul);
>  
> +  TEST ("0000007b-test",       NULL, "%x-%s",       123, "test");
> +  TEST ("0000007b-test-000001c8", NULL, "%x-%s-%x", 123, "test", 456);
> +  TEST_LONG ("fffffffd-test",  NULL, "%lx-%s",      (long int)~2ul, "test");
> +  TEST_LONG ("fffffffe-test",  NULL, "%zx-%s",      (size_t)~1ul, "test");
> +
>    struct support_capture_subprocess result;
>    result = support_capture_subprocess (do_test_invalid_conversion, NULL);
>    support_capture_subprocess_check (&result, "dl-exception",

Okay.

Reviewed-by: Florian Weimer <fweimer@redhat.com>

Thanks,
Florian



More information about the Libc-alpha mailing list