[PATCH v2 08/14] stdio-common: Fix error reporting in scanf input specifier tests

Maciej W. Rozycki macro@orcam.me.uk
Thu Jun 5 17:59:03 GMT 2025


From: Maciej W. Rozycki <macro@redhat.com>

Remove buffer contents reporting from the real variant of 'verify_input' 
where there has been an input data format error making the contents of 
data buffers irrelevant.

For example given invalid float input data:

%a:nan:1:3:nan(:

these messages are produced:

error: ./tst-scanf-format-skeleton.c:240: input buffer: `0000c07f'
error: ./tst-scanf-format-skeleton.c:240: value buffer: `0000c07f'
error: ./tst-scanf-format-skeleton.c:242: input line 1: input data format error

with the two former lines irrelevant.  Remove them from output then, 
only leaving:

error: ./tst-scanf-format-skeleton.c:242: input line 1: input data format error

No test case added as it's a test case issue in the first place.
---
No change from v1.
---
 stdio-common/tst-scanf-format-real.h |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

glibc-tst-scanf-format-all-real-verify-message-fix.diff
Index: glibc/stdio-common/tst-scanf-format-real.h
===================================================================
--- glibc.orig/stdio-common/tst-scanf-format-real.h
+++ glibc/stdio-common/tst-scanf-format-real.h
@@ -79,13 +79,13 @@
   initialize_value (v);							\
   /* Make sure it's been committed.  */					\
   __asm__ ("" : : : "memory");						\
+									\
   v = read_real (&errx);						\
   if (errx < 0)								\
     goto out;								\
-  match = compare_real (val, v);					\
 									\
-out:									\
-  if (errx || !match)							\
+  match = compare_real (val, v);					\
+  if (!match)								\
     {									\
       union								\
 	{								\
@@ -104,6 +104,7 @@ out:									\
       printf ("'\n");							\
     }									\
 									\
+out:									\
   *errp = errx;								\
   match;								\
 })


More information about the Libc-alpha mailing list