From 13e3016b986bebd09d678e7d3b11a027fd32148d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcela=20Ma=C5=A1l=C3=A1=C5=88ov=C3=A1?= Date: Wed, 16 May 2012 16:22:46 +0200 Subject: [PATCH] Remove patches merged into code of 5.16. --- ...eak-memory-when-accessing-named-capt.patch | 52 ------------- ...s-must-run-before-sigsuspend-returns.patch | 43 ----------- perl-5.14.2-Stop-V-from-leaking.patch | 54 ------------- ...e-missing-LEAVEs-in-perlio_async_run.patch | 36 --------- perl-5.14.2-digest_eval.patch | 28 ------- perl-5.14.2-large-repeat-heap-abuse.patch | 76 ------------------- perl-5.14.2-locale-search-inc.patch | 26 ------- 7 files changed, 315 deletions(-) delete mode 100644 perl-5.14.2-Don-t-leak-memory-when-accessing-named-capt.patch delete mode 100644 perl-5.14.2-Signal-handlers-must-run-before-sigsuspend-returns.patch delete mode 100644 perl-5.14.2-Stop-V-from-leaking.patch delete mode 100644 perl-5.14.2-add-a-couple-missing-LEAVEs-in-perlio_async_run.patch delete mode 100644 perl-5.14.2-digest_eval.patch delete mode 100644 perl-5.14.2-large-repeat-heap-abuse.patch delete mode 100644 perl-5.14.2-locale-search-inc.patch diff --git a/perl-5.14.2-Don-t-leak-memory-when-accessing-named-capt.patch b/perl-5.14.2-Don-t-leak-memory-when-accessing-named-capt.patch deleted file mode 100644 index a3aabb2..0000000 --- a/perl-5.14.2-Don-t-leak-memory-when-accessing-named-capt.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 7402016d87474403eea5c52dc2c071f68cbbe25c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=86var=20Arnfj=C3=B6r=C3=B0=20Bjarmason?= -Date: Tue, 13 Dec 2011 14:43:12 +0000 -Subject: [PATCH] [RT #78266] Don't leak memory when accessing named captures - that didn't match - -Since 5.10 (probably 44a2ac759e) named captures have been leaking -memory when they're used, don't actually match, but are later -accessed. E.g.: - - $ perl -wle 'for (1..10_000_000) { if ("foo" =~ /(foo|(?bar))?/) { my $capture = $+{capture} } } system "ps -o rss $$"' - RSS - 238524 - -Here we match the "foo" branch of our regex, but since we've used a -name capture we'll end up running the code in -Perl_reg_named_buff_fetch, which allocates a newSVsv(&PL_sv_undef) but -never uses it unless it's trying to return an array. - -Just change that code not to allocate scalars we don't plan to -return. With this fix we don't leak any memory since there's nothing -to leak anymore. - - $ ./perl -Ilib -wle 'for (1..10_000_000) { if ("foo" =~ /(foo|(?bar))?/) { my $capture = $+{capture} } } system "ps -o rss $$"' - RSS - 3528 - -This reverts commit b28f4af8cf94eb18c0cfde71e9625081912499a8 ("Fix -allocating something in the first place is a better solution than -allocating it, not using it, and then freeing it. - -Petr Pisar: perldelta and wrong fix (commit b28f4af8cf) removed. ---- - regcomp.c | 7 ++----- - -diff --git a/regcomp.c b/regcomp.c -index 9e9fac4..56b2b9c 100644 ---- a/regcomp.c -+++ b/regcomp.c -@@ -5409,7 +5409,8 @@ Perl_reg_named_buff_fetch(pTHX_ REGEXP * const r, SV * const namesv, - if (!retarray) - return ret; - } else { -- ret = newSVsv(&PL_sv_undef); -+ if (retarray) -+ ret = newSVsv(&PL_sv_undef); - } - if (retarray) - av_push(retarray, ret); --- -1.7.7.4 - diff --git a/perl-5.14.2-Signal-handlers-must-run-before-sigsuspend-returns.patch b/perl-5.14.2-Signal-handlers-must-run-before-sigsuspend-returns.patch deleted file mode 100644 index f0b894b..0000000 --- a/perl-5.14.2-Signal-handlers-must-run-before-sigsuspend-returns.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 38d7c791f597c3d567a70466dc2e48b73ec318bf Mon Sep 17 00:00:00 2001 -From: Leon Timmermans -Date: Mon, 26 Dec 2011 19:06:54 +0200 -Subject: [PATCH] Signal handlers must run before sigsuspend returns - -The whole point of sigsuspend and pause is to wait until a signal has -arrived, and then return *after* it has been triggered. Currently -delayed/"safe" signals prevent that from happening, which might cause -race conditions. - -This patch prevents that (as far as possible) by running the signal -handlers ASAP. - -Petr Pisar: Back-ported to 5.14.2. ---- - ext/POSIX/POSIX.xs | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs -index 8dc1f5a..4b9779b 100644 ---- a/ext/POSIX/POSIX.xs -+++ b/ext/POSIX/POSIX.xs -@@ -1550,6 +1550,8 @@ sigaction(sig, optaction, oldaction = 0) - SysRet - sigpending(sigset) - POSIX::SigSet sigset -+ CLEANUP: -+ PERL_ASYNC_CHECK(); - - SysRet - sigprocmask(how, sigset, oldsigset = 0) -@@ -2019,6 +2021,8 @@ pathconf(filename, name) - - SysRet - pause() -+ CLEANUP: -+ PERL_ASYNC_CHECK(); - - SysRet - setgid(gid) --- -1.7.7.6 - diff --git a/perl-5.14.2-Stop-V-from-leaking.patch b/perl-5.14.2-Stop-V-from-leaking.patch deleted file mode 100644 index c8ac0d9..0000000 --- a/perl-5.14.2-Stop-V-from-leaking.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 8ee4f541d4632a3615e70e177e004c5db970c8cd Mon Sep 17 00:00:00 2001 -From: Father Chrysostomos -Date: Fri, 3 Feb 2012 21:55:31 -0800 -Subject: [PATCH] Stop !$^V from leaking - -by mortalising the temporary SVs. - -Petr Pisar: Back-port for 5.14.2. ---- - t/op/svleak.t | 4 +++- - universal.c | 8 +++++++- - 2 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/t/op/svleak.t b/t/op/svleak.t -index 5eb090c..0f4348e 100644 ---- a/t/op/svleak.t -+++ b/t/op/svleak.t -@@ -13,7 +13,7 @@ BEGIN { - or skip_all("XS::APItest not available"); - } - --plan tests => 19; -+plan tests => 20; - - # run some code N times. If the number of SVs at the end of loop N is - # greater than (N-1)*delta at the end of loop 1, we've got a leak -@@ -141,3 +141,5 @@ leak(2, 0, - }, - "rcatline leak" - ); -+ -+leak(2,0,sub { !$^V }, '[perl #109762] version object in boolean context'); -diff --git a/universal.c b/universal.c -index 092ee80..9615d59 100644 ---- a/universal.c -+++ b/universal.c -@@ -544,7 +544,13 @@ XS(XS_version_boolean) - SP -= items; - if (sv_derived_from(ST(0), "version") && SvROK(ST(0))) { - SV * const lobj = SvRV(ST(0)); -- SV * const rs = newSViv( vcmp(lobj,new_version(newSVpvs("0"))) ); -+ SV * const rs = -+ newSViv( vcmp(lobj, -+ sv_2mortal(new_version( -+ sv_2mortal(newSVpvs("0")) -+ )) -+ ) -+ ); - mPUSHs(rs); - PUTBACK; - return; --- -1.7.7.6 - diff --git a/perl-5.14.2-add-a-couple-missing-LEAVEs-in-perlio_async_run.patch b/perl-5.14.2-add-a-couple-missing-LEAVEs-in-perlio_async_run.patch deleted file mode 100644 index 145e92e..0000000 --- a/perl-5.14.2-add-a-couple-missing-LEAVEs-in-perlio_async_run.patch +++ /dev/null @@ -1,36 +0,0 @@ -From be48bbe8d671b6841c3ec7cb734b98071afe3cd9 Mon Sep 17 00:00:00 2001 -From: Chip -Date: Mon, 19 Sep 2011 23:51:49 -0700 -Subject: [PATCH] add a couple missing LEAVEs in perlio_async_run() - ---- - perlio.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -diff --git a/perlio.c b/perlio.c -index f0d67ae..79c6fdf 100644 ---- a/perlio.c -+++ b/perlio.c -@@ -2563,8 +2563,10 @@ S_perlio_async_run(pTHX_ PerlIO* f) { - SAVEDESTRUCTOR_X(S_lockcnt_dec, (void*)f); - PerlIO_lockcnt(f)++; - PERL_ASYNC_CHECK(); -- if ( !(PerlIOBase(f)->flags & PERLIO_F_CLEARED) ) -+ if ( !(PerlIOBase(f)->flags & PERLIO_F_CLEARED) ) { -+ LEAVE; - return 0; -+ } - /* we've just run some perl-level code that could have done - * anything, including closing the file or clearing this layer. - * If so, free any lower layers that have already been -@@ -2576,6 +2578,7 @@ S_perlio_async_run(pTHX_ PerlIO* f) { - *f = l->next; - Safefree(l); - } -+ LEAVE; - return 1; - } - --- -1.7.7.4 - diff --git a/perl-5.14.2-digest_eval.patch b/perl-5.14.2-digest_eval.patch deleted file mode 100644 index dc7cc2d..0000000 --- a/perl-5.14.2-digest_eval.patch +++ /dev/null @@ -1,28 +0,0 @@ -From dbcab24bb98b4a243c8330bc7017c2080832b3f9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Tue, 4 Oct 2011 13:46:39 +0200 -Subject: [PATCH] Fix code injection in Digest - -See for more details. ---- - cpan/Digest/Digest.pm | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -diff --git a/cpan/Digest/Digest.pm b/cpan/Digest/Digest.pm -index 384dfc8..4b923ae 100644 ---- a/cpan/Digest/Digest.pm -+++ b/cpan/Digest/Digest.pm -@@ -35,7 +35,9 @@ sub new - ($class, @args) = @$class if ref($class); - no strict 'refs'; - unless (exists ${"$class\::"}{"VERSION"}) { -- eval "require $class"; -+ my $pm_file = $class . ".pm"; -+ $pm_file =~ s{::}{/}g; -+ eval { require $pm_file }; - if ($@) { - $err ||= $@; - next; --- -1.7.6.4 - diff --git a/perl-5.14.2-large-repeat-heap-abuse.patch b/perl-5.14.2-large-repeat-heap-abuse.patch deleted file mode 100644 index 1793c7a..0000000 --- a/perl-5.14.2-large-repeat-heap-abuse.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 647b6565b7d935eb9b92e057d0c7ae5fe54726e2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Thu, 6 Oct 2011 16:35:49 +0200 -Subject: [PATCH] Don't segfault given string repeat count larger than 2^31 - -E.g., this overflows INT_MAX and overruns heap memory: - - $ perl -le 'print "v"x(2**31+1)' - [Exit 139 (SEGV)] - -(Perl_repeatcpy): Use the same type for "count" as our sole -callers in pp.c: IV (long), not I32 (int). Otherwise, passing -the wider value to a narrower "I32 count" - - http://thread.gmane.org/gmane.comp.lang.perl.perl5.porters/96812 - https://rt.perl.org/rt3/Ticket/Display.html?id=94560 - -Original author: Jim Meyering -Petr Pisar: Modify embed.fnc instead of generated proto.h ---- - embed.fnc | 2 +- - util.c | 8 ++++---- - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/embed.fnc b/embed.fnc -index bce167e..8c86a3e 100644 ---- a/embed.fnc -+++ b/embed.fnc -@@ -1032,7 +1032,7 @@ EXp |SV*|reg_qr_package|NN REGEXP * const rx - - : FIXME - why the E? - Ep |void |regprop |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o --Anp |void |repeatcpy |NN char* to|NN const char* from|I32 len|I32 count -+Anp |void |repeatcpy |NN char* to|NN const char* from|I32 len|IV count - AnpP |char* |rninstr |NN const char* big|NN const char* bigend \ - |NN const char* little|NN const char* lend - Ap |Sighandler_t|rsignal |int i|Sighandler_t t -diff --git a/util.c b/util.c -index 0ea39c6..3d4dcc7 100644 ---- a/util.c -+++ b/util.c -@@ -3315,7 +3315,7 @@ Perl_my_pclose(pTHX_ PerlIO *ptr) - - #define PERL_REPEATCPY_LINEAR 4 - void --Perl_repeatcpy(register char *to, register const char *from, I32 len, register I32 count) -+Perl_repeatcpy(register char *to, register const char *from, I32 len, register IV count) - { - PERL_ARGS_ASSERT_REPEATCPY; - -@@ -3323,19 +3323,19 @@ Perl_repeatcpy(register char *to, register const char *from, I32 len, register I - memset(to, *from, count); - else if (count) { - register char *p = to; -- I32 items, linear, half; -+ IV items, linear, half; - - linear = count < PERL_REPEATCPY_LINEAR ? count : PERL_REPEATCPY_LINEAR; - for (items = 0; items < linear; ++items) { - register const char *q = from; -- I32 todo; -+ IV todo; - for (todo = len; todo > 0; todo--) - *p++ = *q++; - } - - half = count / 2; - while (items <= half) { -- I32 size = items * len; -+ IV size = items * len; - memcpy(p, to, size); - p += size; - items *= 2; --- -1.7.6.4 - diff --git a/perl-5.14.2-locale-search-inc.patch b/perl-5.14.2-locale-search-inc.patch deleted file mode 100644 index 65bc86e..0000000 --- a/perl-5.14.2-locale-search-inc.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/cpan/Unicode-Collate/Collate/Locale.pm b/cpan/Unicode-Collate/Collate/Locale.pm -index b26db00..35f4fb3 100644 ---- a/cpan/Unicode-Collate/Collate/Locale.pm -+++ b/cpan/Unicode-Collate/Collate/Locale.pm -@@ -8,7 +8,6 @@ our $VERSION = '0.73'; - - use File::Spec; - --(my $ModPath = $INC{'Unicode/Collate/Locale.pm'}) =~ s/\.pm$//; - my $PL_EXT = '.pl'; - - my %LocaleFile = map { ($_, $_) } qw( -@@ -56,7 +55,12 @@ sub _fetchpl { - my $f = $LocaleFile{$accepted}; - return if !$f; - $f .= $PL_EXT; -- my $path = File::Spec->catfile($ModPath, $f); -+ my $path; -+ for my $incpath (@INC) { -+ $path = File::Spec->catfile($incpath, 'Unicode', 'Collate', 'Locale', $f); -+ last if -f $path; -+ $path = undef; -+ } - my $h = do $path; - croak "Unicode/Collate/Locale/$f can't be found" if !$h; - return $h;