[reportlab-users] Buffer overrun with large parameters
Robin Becker
robin at reportlab.com
Mon Apr 25 09:55:44 EDT 2005
amaury.forgeotdarc at ubitrade.com wrote:
......
> - when rl_accel is present, the script crashes with an Access Violation
> error.
> The cause is in _rl_accel.c, where the function _fp_one tries to write
> 136 digits in a static buffer which is only 30 characters long...
>
> - when rl_accel is not present, the generated PDF is invalid :
> "bad token 1.2e+136", but this one doesn't bother me.
>
> Since every number written in the PDF file uses the _fp_one function,
> I propose to protect it with a check like this one:
>
> if(fabs(d)>=1.0e20){
> PyErr_SetString(ErrorObject, "numeric value too large");
> return NULL;
> }
>
> 1e20 seems enough for any application...
>
..... that seems like a bug to me :(
I guess we should protect against such large numbers. I'll put in a fix today.
Probaby we should be using those new fangled buffer overrun protected sprintf
funcs, but I suppose they're not standardized yet. M$ calls it _snprintf, but I
bet gcc and others differ.
Since we need to support 16.16 binary fp, 1e20 seems large enough.
--
Robin Becker
More information about the reportlab-users
mailing list