From: Adhemerval Zanella Date: Tue, 6 May 2025 13:38:31 +0000 (+0000) Subject: math: Fix UB on dbl-64 rint X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae54df4654944360f7c0c298a3db3706cc0e8d42;p=thirdparty%2Fglibc.git math: Fix UB on dbl-64 rint UBSAN: Undefined behaviour in ../sysdeps/ieee754/dbl-64/s_rint.c:53:4 left shift of 1 by 63 cannot be represented in type 'long long int' --- diff --git a/sysdeps/ieee754/dbl-64/s_rint.c b/sysdeps/ieee754/dbl-64/s_rint.c index 8604733ef9..450d886655 100644 --- a/sysdeps/ieee754/dbl-64/s_rint.c +++ b/sysdeps/ieee754/dbl-64/s_rint.c @@ -37,7 +37,8 @@ __rint (double x) 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */ -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */ }; - int64_t i0, sx; + int64_t i0; + uint64_t sx; int32_t j0; EXTRACT_WORDS64 (i0, x); sx = (i0 >> 63) & 1;