mirror of git://sourceware.org/git/glibc.git
math: Fix UB on cbrtf (BZ 32922)
The left shift overflows for 'int64_t', use unsigned instead. It syncs with CORE-MATH commit f7c7408d1749ec2859ea249495af699359ae559b. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
parent
c8775c0423
commit
7619c1b032
|
@ -3,7 +3,7 @@
|
|||
Copyright (c) 2023, 2024 Alexei Sibidanov.
|
||||
|
||||
The original version of this file was copied from the CORE-MATH
|
||||
project (file src/binary32/cbrt/cbrtf.c, revision bc385c2).
|
||||
project (file src/binary32/cbrt/cbrtf.c, revision f7c7408d).
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -61,8 +61,8 @@ __cbrtf (float x)
|
|||
e += 899;
|
||||
uint32_t et = e / 3, it = e % 3;
|
||||
uint64_t isc = escale[it].u;
|
||||
isc += (int64_t) (et - 342) << 52;
|
||||
isc |= (int64_t) sgn << 63;
|
||||
isc += (uint64_t) (et - 342) << 52;
|
||||
isc |= (uint64_t) sgn << 63;
|
||||
double cvt2 = asdouble (isc);
|
||||
static const double c[] =
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue