• R
    fix integer overflow in float printf needed-precision computation · 70d2687d
    Rich Felker 提交于
    if the requested precision is close to INT_MAX, adding
    LDBL_MANT_DIG/3+8 overflows. in practice the resulting undefined
    behavior manifests as a large negative result, which is then used to
    compute the new end pointer (z) with a wildly out-of-bounds value
    (more overflow, more undefined behavior). the end result is at least
    incorrect output and character count (return value); worse things do
    not seem to happen, but detailed analysis has not been done.
    
    this patch fixes the overflow by performing the intermediate
    computation as unsigned; after division by 9, the final result
    necessarily fits in int.
    70d2687d
vfprintf.c 15.8 KB