summaryrefslogtreecommitdiff
path: root/scope.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2013-08-24 19:09:59 -0700
committerFather Chrysostomos <sprout@cpan.org>2013-08-25 06:39:28 -0700
commitfc16c3924bd6aa054f21ad5445fecf9b7f39dc36 (patch)
treea0ac4568d977ef5c9e125c7bae9e6de466d48146 /scope.c
parente8eb279cb8d8b30256eb8b1957e1dabed28fc4eb (diff)
downloadperl-fc16c3924bd6aa054f21ad5445fecf9b7f39dc36.tar.gz
Use SSize_t when extending the stack
(I am referring to what is usually known simply as The Stack.) This partially fixes #119161. By casting the argument to int, we can end up truncating/wrapping it on 64-bit systems, so EXTEND(SP, 2147483648) translates into EXTEND(SP, -1), which does not extend the stack at all. Then writing to the stack in code like ()=1..1000000000000 goes past the end of allocated memory and crashes. I can’t really write a test for this, since instead of crashing it will use more memory than I have available (and then I’ll start for- getting things).
Diffstat (limited to 'scope.c')
-rw-r--r--scope.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/scope.c b/scope.c
index 08ecc30b70..fb226a17f1 100644
--- a/scope.c
+++ b/scope.c
@@ -27,7 +27,7 @@
#include "perl.h"
SV**
-Perl_stack_grow(pTHX_ SV **sp, SV **p, int n)
+Perl_stack_grow(pTHX_ SV **sp, SV **p, SSize_t n)
{
dVAR;