2019-01-26 | Paul Boddie | raw files shortlog changelog graph | Detect overflows beyond the employed integer range for exponentiation. | |
templates/native/int.c (file) |
1.1 --- a/templates/native/int.c Sat Jan 26 00:46:13 2019 +0100 1.2 +++ b/templates/native/int.c Sat Jan 26 01:04:18 2019 +0100 1.3 @@ -145,6 +145,10 @@ 1.4 1.5 if (errno == ERANGE) 1.6 __raise_overflow_error(); 1.7 + if ((k > 0) && (k > __MAXINT)) 1.8 + __raise_overflow_error(); 1.9 + if ((k < 0) && (k < __MININT)) 1.10 + __raise_overflow_error(); 1.11 1.12 /* Return the new integer. */ 1.13 return __new_int(k);