From: Florian Weimer Date: Tue, 16 May 2023 21:26:40 +0000 (+0200) Subject: stdlib: Avoid undefined behavior in stdlib/tst-labs X-Git-Tag: glibc-2.38~249 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=10a81dd4cf89276f7b1208ed044b93ae846800ce;p=thirdparty%2Fglibc.git stdlib: Avoid undefined behavior in stdlib/tst-labs The last loop could attempt to overflow beyond INT_MAX on 32-bit architectures. Also switch to GNU style. Reviewed-by: Siddhesh Poyarekar --- diff --git a/stdlib/tst-labs.c b/stdlib/tst-labs.c index 92b456745ac..a8d2381f87b 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; }