[PATCH] setpgrp() should extend the stack before modifying it
Niko Tyni
ntyni at debian.org
Mon Jan 26 12:14:36 UTC 2009
As reported by Marcin Owsiany in <http://bugs.debian.org/512796>,
invoking setpgrp without any arguments could corrupt the stack.
---
pp_sys.c | 1 +
t/op/setpgrpstack.t | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 0 deletions(-)
create mode 100644 t/op/setpgrpstack.t
diff --git a/pp_sys.c b/pp_sys.c
index cfbf918..0d2c970 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -4318,6 +4318,7 @@ PP(pp_setpgrp)
if (MAXARG < 2) {
pgrp = 0;
pid = 0;
+ XPUSHi(-1);
}
else {
pgrp = POPi;
diff --git a/t/op/setpgrpstack.t b/t/op/setpgrpstack.t
new file mode 100644
index 0000000..31f498e
--- /dev/null
+++ b/t/op/setpgrpstack.t
@@ -0,0 +1,16 @@
+#!./perl -w
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+use Config;
+plan tests => 2;
+
+SKIP: {
+ skip "setpgrp() is not available", 2 unless $Config{d_setpgrp};
+ ok(!eval { package A;sub foo { die("got here") }; package main; A->foo(setpgrp())});
+ ok($@ =~ /got here/, "setpgrp() should extend the stack before modifying it");
+}
--
1.5.6.5
--Dxnq1zWXvFF0Q93v--
------------=_1232978406-14702-0--
More information about the Perl-maintainers
mailing list