We convert the integer part of the float to a long. We should check it
fits first.
Issue reported by Guido Vranken.
GitHub Issue #1102
Reviewed-by: Richard Levitte <levitte@openssl.org>
int padlen = 0;
int zpadlen = 0;
long exp = 0;
- long intpart;
- long fracpart;
- long max10;
+ unsigned long intpart;
+ unsigned long fracpart;
+ unsigned long max10;
int realstyle;
if (max < 0)
fvalue = tmpvalue;
}
ufvalue = abs_val(fvalue);
- intpart = (long)ufvalue;
+ if (ufvalue > ULONG_MAX) {
+ /* Number too big */
+ return 0;
+ }
+ intpart = (unsigned long)ufvalue;
/*
* sorry, we only support 9 digits past the decimal because of our