]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
stdio-common: Fix error reporting in scanf input specifier tests
authorMaciej W. Rozycki <macro@redhat.com>
Sat, 23 Aug 2025 00:02:10 +0000 (01:02 +0100)
committerMaciej W. Rozycki <macro@redhat.com>
Sat, 23 Aug 2025 00:02:46 +0000 (01:02 +0100)
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.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
stdio-common/tst-scanf-format-real.h

index ed7941849eca0b90cd42c44628dc21df4467624b..fc7f39e7602d2a93fb085b6882faf8aa837556a1 100644 (file)
   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;                                                               \
 })