[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