mirror of git://git.musl-libc.org/musl
catch invalid ld80 bit patterns and treat them as nan
this should not be necessary - the invalid bit patterns cannot be created except through type punning. however, some broken gnu software is passing them to printf and triggering dangerous stack-smashing, so let's catch them anyway...
This commit is contained in:
parent
e5cb55fedd
commit
f6fd351c70
|
@ -7,10 +7,10 @@ int __fpclassifyl(long double __x)
|
|||
union {
|
||||
long double __ld;
|
||||
__uint16_t __hw[5];
|
||||
__uint64_t __m;
|
||||
__int64_t __m;
|
||||
} __y = { __x };
|
||||
int __ee = __y.__hw[4]&0x7fff;
|
||||
if (!__ee) return __y.__m ? FP_SUBNORMAL : FP_ZERO;
|
||||
if (__ee==0x7fff) return __y.__m ? FP_NAN : FP_INFINITE;
|
||||
return FP_NORMAL;
|
||||
return __y.__m < 0 ? FP_NORMAL : FP_NAN;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue