diff options
Diffstat (limited to 'libguile/read.c')
-rw-r--r-- | libguile/read.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libguile/read.c b/libguile/read.c index 382a1d379..61addf3a5 100644 --- a/libguile/read.c +++ b/libguile/read.c @@ -1116,6 +1116,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_unlocked (port); |