]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
string: Fix UB on test-strrchr
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 25 Apr 2025 16:04:33 +0000 (13:04 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 8 May 2025 12:25:49 +0000 (09:25 -0300)
UBSAN: Undefined behaviour in test-strrchr.c:100:35 unsigned integer overflow: 1804289383 * 846930886 cannot be represened in type 'long int'

Use int64_t operations instead.

string/test-strrchr.c

index 1503a1c9e5933c961c27c491460a006e23cc9bc5..09a35137ef5c7151a1fe4d37460ec086f9fd1e2a 100644 (file)
@@ -97,9 +97,9 @@ do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char)
 
   for (i = 0; i < len; ++i)
     {
-      buf[align + i] = (random () * random ()) & max_char;
+      buf[align + i] = ((int64_t)random () * random ()) & max_char;
       if (!buf[align + i])
-       buf[align + i] = (random () * random ()) & max_char;
+       buf[align + i] = ((int64_t)random () * random ()) & max_char;
       if (!buf[align + i])
        buf[align + i] = 1;
       if ((i > pos || pos >= len) && buf[align + i] == seek_char)