From a662686a25df19970e15f3b642ab08db5128489b Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 24 Dec 2013 08:00:51 -0500 Subject: [PATCH] read: Avoid signed integer overflow in 'read_decimal_integer'. * libguile/read.c (read_decimal_integer): Avoid overflow. --- libguile/read.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libguile/read.c b/libguile/read.c index 299ab70a4..b36ecd437 100644 --- a/libguile/read.c +++ b/libguile/read.c @@ -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); -- 2.20.1