From: Adhemerval Zanella Date: Thu, 8 May 2025 12:21:55 +0000 (+0000) Subject: math: Fix UB in ldbl-128ibm setpayload X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Fazanella%2Fubsan-undef;p=thirdparty%2Fglibc.git math: Fix UB in ldbl-128ibm setpayload --- diff --git a/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl_main.c b/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl_main.c index bff6c34625..eab69228d1 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl_main.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl_main.c @@ -42,7 +42,8 @@ FUNC (long double *x, long double payload) if ((lx & 0x7fffffffffffffffULL) != 0 || exponent >= BIAS + PAYLOAD_DIG || (exponent < BIAS && !(SET_HIGH_BIT && hx == 0)) - || (hx & ((1ULL << (BIAS + EXPLICIT_MANT_DIG - exponent)) - 1)) != 0) + || ((BIAS + EXPLICIT_MANT_DIG - exponent <= 64) + && ((hx & ((1ULL << (BIAS + EXPLICIT_MANT_DIG - exponent)) - 1)) != 0))) { *x = 0.0L; return 1;