1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

read: Avoid signed integer overflow in 'read_decimal_integer'.

* libguile/read.c (read_decimal_integer): Avoid overflow.
This commit is contained in:
Mark H Weaver 2013-12-24 08:00:51 -05:00
parent b6203a189b
commit a662686a25

View file

@ -1121,6 +1121,9 @@ read_decimal_integer (SCM port, int c, ssize_t *resp)
while ('0' <= c && c <= '9')
{
if (((SSIZE_MAX - (c-'0')) / 10) <= res)
scm_i_input_error ("read_decimal_integer", port,
"number too large", SCM_EOL);
res = 10*res + c-'0';
got_it = 1;
c = scm_getc (port);