You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.6 KiB
63 lines
1.6 KiB
From 2bcb4a5888b1c26ee11bc447cc02b42290c707af Mon Sep 17 00:00:00 2001
|
|
From: Tony Cook <tony@develop-help.com>
|
|
Date: Mon, 5 Dec 2016 11:48:14 +1100
|
|
Subject: [PATCH] (perl #130262) split scalar context stack overflow fix
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Ported to 5.14.1:
|
|
|
|
commit 02c161ef974f8f1efbb5632f741c1164adb6ca75
|
|
Author: Tony Cook <tony@develop-help.com>
|
|
Date: Mon Dec 5 11:48:14 2016 +1100
|
|
|
|
(perl #130262) split scalar context stack overflow fix
|
|
|
|
pp_split didn't ensure there was space for its return value
|
|
in scalar context.
|
|
|
|
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|
---
|
|
pp.c | 2 +-
|
|
t/op/split.t | 6 +++++-
|
|
2 files changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/pp.c b/pp.c
|
|
index 70345ce..334b353 100644
|
|
--- a/pp.c
|
|
+++ b/pp.c
|
|
@@ -6259,7 +6259,7 @@ PP(pp_split)
|
|
}
|
|
|
|
GETTARGET;
|
|
- PUSHi(iters);
|
|
+ XPUSHi(iters);
|
|
RETURN;
|
|
}
|
|
|
|
diff --git a/t/op/split.t b/t/op/split.t
|
|
index b7846a1..3e08841 100644
|
|
--- a/t/op/split.t
|
|
+++ b/t/op/split.t
|
|
@@ -7,7 +7,7 @@ BEGIN {
|
|
set_up_inc('../lib');
|
|
}
|
|
|
|
-plan tests => 133;
|
|
+plan tests => 134;
|
|
|
|
$FS = ':';
|
|
|
|
@@ -534,3 +534,7 @@ is "@a", '1 2 3', 'assignment to split-to-array (stacked)';
|
|
ok eval { $a[0] = 'a'; 1; }, "array split filling AvARRAY: assign 0";
|
|
is "@a", "a b", "array split filling AvARRAY: result";
|
|
}
|
|
+
|
|
+fresh_perl_is(<<'CODE', '', {}, "scalar split stack overflow");
|
|
+map{int"";split//.0>60for"0000000000000000"}split// for"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
+CODE
|
|
--
|
|
2.7.4
|
|
|