Fix stack handling when calling chdir without an argument

This commit is contained in:
Petr Písař 2016-11-03 14:58:16 +01:00
parent c9adf8fb6f
commit 271738ffe9
2 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,66 @@
From 36dc786e5ea4a6d3e85f1f55251b8538fabb8321 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Mon, 5 Sep 2016 15:40:11 +1000
Subject: [PATCH] (perl #129130) make chdir allocate the stack it needs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Ported to 5.22.2:
commit 92c843fb4b4e1a1e0ac7ec0fe198dc77266838da
Author: Tony Cook <tony@develop-help.com>
Date: Mon Sep 5 15:40:11 2016 +1000
(perl #129130) make chdir allocate the stack it needs
chdir with no argument didn't ensure there was stack space available
for its result.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
pp_sys.c | 1 +
t/op/chdir.t | 8 +++++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/pp_sys.c b/pp_sys.c
index 1285c75..2171a1a 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -3580,6 +3580,7 @@ PP(pp_chdir)
HV * const table = GvHVn(PL_envgv);
SV **svp;
+ EXTEND(SP, 1);
if ( (svp = hv_fetchs(table, "HOME", FALSE))
|| (svp = hv_fetchs(table, "LOGDIR", FALSE))
#ifdef VMS
diff --git a/t/op/chdir.t b/t/op/chdir.t
index 813b0ed..f16be41 100644
--- a/t/op/chdir.t
+++ b/t/op/chdir.t
@@ -10,7 +10,7 @@ BEGIN {
# possibilities into @INC.
unshift @INC, qw(t . lib ../lib);
require "./test.pl";
- plan(tests => 48);
+ plan(tests => 49);
}
use Config;
@@ -176,6 +176,12 @@ WARNING
}
}
+fresh_perl_is(<<'EOP', '', { stderr => 1 }, "check stack handling");
+for $x (map $_+1, 1 .. 100) {
+ map chdir, 1 .. $x;
+}
+EOP
+
my %Saved_Env = ();
sub clean_env {
foreach my $env (@magic_envs) {
--
2.7.4

View File

@ -143,6 +143,9 @@ Patch45: perl-5.22.2-regcomp.c-fix-perl-129950-fix-firstchar-bitmap-under
# RT#130001, in upstream after 5.25.6
Patch46: perl-5.25.6-perl-130001-h2xs-avoid-infinite-loop-for-enums.patch
# Fix stack handling when calling chdir without an argument, RT#129130
Patch47: perl-5.22.2-perl-129130-make-chdir-allocate-the-stack-it-needs.patch
# Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048
Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch
@ -2202,6 +2205,7 @@ Perl extension for Version Objects
%patch44 -p1
%patch45 -p1
%patch46 -p1
%patch47 -p1
%patch200 -p1
%patch201 -p1
@ -2240,6 +2244,7 @@ perl -x patchlevel.h \
'Fedora Patch44: Fix parsing perl options in shell bang line (RT#129336)' \
'Fedora Patch45: Fix firstchar bitmap under UTF-8 with prefix optimization (RT#129950)' \
'Fedora Patch46: Avoid infinite loop in h2xs tool if enum and type have the same name (RT130001)' \
'Fedora Patch47: Fix stack handling when calling chdir without an argument (RT#129130)' \
'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \
'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \
%{nil}
@ -4264,6 +4269,7 @@ popd
- Fix firstchar bitmap under UTF-8 with prefix optimization (RT#129950)
- Avoid infinite loop in h2xs tool if enum and type have the same name
(RT130001)
- Fix stack handling when calling chdir without an argument (RT#129130)
* Wed Aug 03 2016 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.22.2-354
- Avoid loading optional modules from default . (CVE-2016-1238)