]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
math: Fix UB in dbl-64 lrint
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 6 May 2025 11:43:19 +0000 (11:43 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 8 May 2025 12:25:49 +0000 (09:25 -0300)
UBSAN: Undefined behaviour in ../sysdeps/ieee754/dbl-64/s_lrint.c:99:30 left shift of 1048576 by 11 cannot be represented in type 'long int'

sysdeps/ieee754/dbl-64/s_lrint.c

index 980959292e6e8f764a49d7707cf8440c0fb6967b..a3cd9ca756b888cd023924e87f2f43ffa67e8206 100644 (file)
@@ -95,7 +95,7 @@ __lrint (double x)
          if (j0 == 20)
            result = (long int) i0;
          else
-           result = ((long int) i0 << (j0 - 20)) | (i1 >> (52 - j0));
+           result = (i0 << (j0 - 20)) | (i1 >> (52 - j0));
        }
     }
   else