mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 19:50:24 +02:00
read: Avoid signed integer overflow in 'read_decimal_integer'.
* libguile/read.c (read_decimal_integer): Avoid overflow.
This commit is contained in:
parent
b6203a189b
commit
a662686a25
1 changed files with 3 additions and 0 deletions
|
@ -1121,6 +1121,9 @@ read_decimal_integer (SCM port, int c, ssize_t *resp)
|
||||||
|
|
||||||
while ('0' <= c && c <= '9')
|
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';
|
res = 10*res + c-'0';
|
||||||
got_it = 1;
|
got_it = 1;
|
||||||
c = scm_getc (port);
|
c = scm_getc (port);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue