Message ID | 87cz303qon.fsf@oldenburg.str.redhat.com |
---|---|
State | New |
Headers | show |
Series | stdlib: Avoid undefined behavior in stdlib/tst-labs | expand |
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> On 2023-05-16 17:35, Florian Weimer via Libc-alpha wrote: > The last loop could attempt to overflow beyond INT_MAX on 32-bit > architectures. > > Also switch to GNU style. > > --- > stdlib/tst-labs.c | 25 +++++++++++++------------ > 1 file changed, 13 insertions(+), 12 deletions(-) > > diff --git a/stdlib/tst-labs.c b/stdlib/tst-labs.c > index 92b456745a..a8d2381f87 100644 > --- a/stdlib/tst-labs.c > +++ b/stdlib/tst-labs.c > @@ -25,25 +25,26 @@ > > static int do_test (void) > { > - long i; > + long int i; > > - TEST_COMPARE(labs(LONG_MAX), LONG_MAX); > - TEST_COMPARE(labs(LONG_MIN + 1), LONG_MAX); > - TEST_COMPARE(labs(-1), 1); > - TEST_COMPARE(labs(0), 0); > - TEST_COMPARE(labs(1), 1); > + TEST_COMPARE (labs (LONG_MAX), LONG_MAX); > + TEST_COMPARE (labs (LONG_MIN + 1), LONG_MAX); > + TEST_COMPARE (labs (-1), 1); > + TEST_COMPARE (labs (0), 0); > + TEST_COMPARE (labs (1), 1); > > for (i = LONG_MIN + 1; i < LONG_MIN + INT_MAX; i += LARGE_PRIME) > - TEST_COMPARE(labs(i), -i); > + TEST_COMPARE (labs (i), -i); > > - for (i = LONG_MAX - INT_MAX; i < LONG_MAX - LARGE_PRIME; i += LARGE_PRIME) > - TEST_COMPARE(labs(i), i); > + for (i = LONG_MAX - INT_MAX; i < LONG_MAX - LARGE_PRIME; > + i += LARGE_PRIME) > + TEST_COMPARE (labs (i), i); > > for (i = INT_MIN + 1; i < 0; i += LARGE_PRIME) > - TEST_COMPARE(labs(i), -i); > + TEST_COMPARE (labs (i), -i); > > - for (i = 0; i < INT_MAX; i += LARGE_PRIME) > - TEST_COMPARE(labs(i), i); > + for (i = 0; i <= INT_MAX - LARGE_PRIME; i += LARGE_PRIME) > + TEST_COMPARE (labs (i), i); > > return EXIT_SUCCESS; > } > > base-commit: 641c4c2b7eb80e2cb2121b1c31096158091a6419 >
diff --git a/stdlib/tst-labs.c b/stdlib/tst-labs.c index 92b456745a..a8d2381f87 100644 --- a/stdlib/tst-labs.c +++ b/stdlib/tst-labs.c @@ -25,25 +25,26 @@ static int do_test (void) { - long i; + long int i; - TEST_COMPARE(labs(LONG_MAX), LONG_MAX); - TEST_COMPARE(labs(LONG_MIN + 1), LONG_MAX); - TEST_COMPARE(labs(-1), 1); - TEST_COMPARE(labs(0), 0); - TEST_COMPARE(labs(1), 1); + TEST_COMPARE (labs (LONG_MAX), LONG_MAX); + TEST_COMPARE (labs (LONG_MIN + 1), LONG_MAX); + TEST_COMPARE (labs (-1), 1); + TEST_COMPARE (labs (0), 0); + TEST_COMPARE (labs (1), 1); for (i = LONG_MIN + 1; i < LONG_MIN + INT_MAX; i += LARGE_PRIME) - TEST_COMPARE(labs(i), -i); + TEST_COMPARE (labs (i), -i); - for (i = LONG_MAX - INT_MAX; i < LONG_MAX - LARGE_PRIME; i += LARGE_PRIME) - TEST_COMPARE(labs(i), i); + for (i = LONG_MAX - INT_MAX; i < LONG_MAX - LARGE_PRIME; + i += LARGE_PRIME) + TEST_COMPARE (labs (i), i); for (i = INT_MIN + 1; i < 0; i += LARGE_PRIME) - TEST_COMPARE(labs(i), -i); + TEST_COMPARE (labs (i), -i); - for (i = 0; i < INT_MAX; i += LARGE_PRIME) - TEST_COMPARE(labs(i), i); + for (i = 0; i <= INT_MAX - LARGE_PRIME; i += LARGE_PRIME) + TEST_COMPARE (labs (i), i); return EXIT_SUCCESS; }