]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix strtoul test on alpine/musl
authorNeil Horman <nhorman@openssl.org>
Tue, 23 Jul 2024 15:34:29 +0000 (11:34 -0400)
committerNeil Horman <nhorman@openssl.org>
Wed, 24 Jul 2024 16:03:16 +0000 (12:03 -0400)
The strtoul tests that were recently added had a compile time check for
__WORDSIZE to properly determine the string to use for an maximal
unsigned long.  Unfortunately musl libc doesn't define __WORDSIZE so we
were in a position where on that platform we fall to the 32 bit unsigned
long variant, which breaks on x86 platforms.

Fix it by doing a preprocessor comparisong on ULONG_MAX instead.

NOTE: This works because preprocessors do arithmetic evaluation on
macros for every compiler we support.  We should be wary of some more
esoteric compilers though.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
(Merged from https://github.com/openssl/openssl/pull/24974)

test/strtoultest.c

index 267cdf114c347db3ed33eab8e288205bffd40f1e..f766b9d433f59bfb0d31d1a5e827e30ccf82ff23 100644 (file)
@@ -36,16 +36,17 @@ static struct strtoul_test_entry strtoul_tests[] = {
     {
         "0x12345", 10, 0, 1, 1
     },
-#if defined(__WORDSIZE) && __WORDSIZE == 64
+#if ULONG_MAX == 4294967295
     /* pass on ULONG_MAX translation */
     {
-        "18446744073709551615", 0, ULONG_MAX, 1, 20
+        "4294967295", 0, ULONG_MAX, 1, 10
     },
 #else
     {
-        "4294967295", 0, ULONG_MAX, 1, 10
+        "18446744073709551615", 0, ULONG_MAX, 1, 20
     },
 #endif
+
     /* fail on negative input */
     {
         "-1", 0, 0, 0, 0