From 10a81dd4cf89276f7b1208ed044b93ae846800ce Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Tue, 16 May 2023 23:26:40 +0200 Subject: 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 --- stdlib/tst-labs.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'stdlib') diff --git a/stdlib/tst-labs.c b/stdlib/tst-labs.c index 92b4567..a8d2381 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; } -- cgit v1.1