From eb7ba19c1dcd0044c31f108a0aeb0c3a040ac16579de37d50740e3158cd0ea2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Schr=C3=B6der?= Date: Tue, 3 Sep 2013 16:08:31 +0000 Subject: [PATCH] - update to perl-5.18.1 OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl?expand=0&rev=101 --- perl-5.18.0.tar.gz | 3 -- perl-5.18.1.tar.gz | 3 ++ perl-incfix.diff | 40 ++++++++++++++ perl-reg89.diff | 127 +++++++++++++++++++++++++++++++++++++++++++++ perl.changes | 15 ++++++ perl.spec | 25 +++++++-- 6 files changed, 205 insertions(+), 8 deletions(-) delete mode 100644 perl-5.18.0.tar.gz create mode 100644 perl-5.18.1.tar.gz create mode 100644 perl-incfix.diff create mode 100644 perl-reg89.diff diff --git a/perl-5.18.0.tar.gz b/perl-5.18.0.tar.gz deleted file mode 100644 index 61db7a4..0000000 --- a/perl-5.18.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e56698de4ad3e3d54e8ed25d2e91ddffd6758c32b72a0de89c38a763e2f783b7 -size 17323206 diff --git a/perl-5.18.1.tar.gz b/perl-5.18.1.tar.gz new file mode 100644 index 0000000..15538a7 --- /dev/null +++ b/perl-5.18.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:655e11a8ffba8853efcdce568a142c232600ed120ac24aaebb4e6efe74e85b2b +size 17337400 diff --git a/perl-incfix.diff b/perl-incfix.diff new file mode 100644 index 0000000..baaae39 --- /dev/null +++ b/perl-incfix.diff @@ -0,0 +1,40 @@ +--- perl.c.orig 2013-09-03 15:36:39.767794693 +0000 ++++ perl.c 2013-09-03 15:39:05.334794435 +0000 +@@ -4423,11 +4423,13 @@ S_init_perllib(pTHX) + # endif + #endif + ++#if 0 + #ifdef PERL_OTHERLIBDIRS + S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), + INCPUSH_ADD_VERSIONED_SUB_DIRS|INCPUSH_NOT_BASEDIR + |INCPUSH_CAN_RELOCATE); + #endif ++#endif + + if (!TAINTING_get) { + #ifndef VMS +@@ -4469,20 +4471,19 @@ S_init_perllib(pTHX) + #if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST) + /* Search for version-specific dirs below here */ + S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_STEM), +- INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); ++ INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); + #endif + + + #if defined(PERL_VENDORLIB_STEM) && defined(PERL_INC_VERSION_LIST) + /* Search for version-specific dirs below here */ + S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_STEM), +- INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); ++ INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); + #endif + + #ifdef PERL_OTHERLIBDIRS + S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), +- INCPUSH_ADD_OLD_VERS|INCPUSH_ADD_ARCHONLY_SUB_DIRS +- |INCPUSH_CAN_RELOCATE); ++ INCPUSH_CAN_RELOCATE); + #endif + #endif /* !PERL_IS_MINIPERL */ + diff --git a/perl-reg89.diff b/perl-reg89.diff new file mode 100644 index 0000000..bfed01e --- /dev/null +++ b/perl-reg89.diff @@ -0,0 +1,127 @@ +--- ./regcomp.c.orig 2013-09-03 14:34:06.277801336 +0000 ++++ ./regcomp.c 2013-09-03 14:34:38.600801279 +0000 +@@ -10643,7 +10643,7 @@ tryagain: + if (num < 1) + vFAIL("Reference to nonexistent or unclosed group"); + } +- if (!isg && (num < 0 || (num > 9 && num >= RExC_npar))) ++ if (!isg && num > 9 && num >= RExC_npar && *RExC_parse != '8' && *RExC_parse != '9') + /* Probably a character specified in octal, e.g. \35 */ + goto defchar; + else { +@@ -10920,10 +10920,28 @@ tryagain: + p++; + ender = grok_bslash_c(*p++, UTF, SIZE_ONLY); + break; +- case '0': case '1': case '2': case '3':case '4': ++ case '8': case '9': /* must be a backreference */ ++ --p; ++ goto loopdone; ++ case '1': case '2': case '3':case '4': + case '5': case '6': case '7': +- if (*p == '0' || +- (isDIGIT(p[1]) && (U32)atoi(p) >= (U32)RExC_npar)) ++ /* When we parse backslash escapes there is ambiguity between ++ * backreferences and octal escapes. Any escape from \1 - \9 is ++ * a backreference, any multi-digit escape which does not start with ++ * 0 and which when evaluated as decimal could refer to an already ++ * parsed capture buffer is a backslash. Anything else is octal. ++ * ++ * Note this implies that \118 could be interpreted as 118 OR as ++ * "\11" . "8" depending on whether there were 118 capture buffers ++ * defined already in the pattern. ++ */ ++ if ( !isDIGIT(p[1]) || atoi(p) <= RExC_npar ) ++ { /* Not to be treated as an octal constant, go ++ find backref */ ++ --p; ++ goto loopdone; ++ } ++ case '0': + { + I32 flags = PERL_SCAN_SILENT_ILLDIGIT; + STRLEN numlen = 3; +@@ -10942,11 +10960,6 @@ tryagain: + form_short_octal_warning(p, numlen)); + } + } +- else { /* Not to be treated as an octal constant, go +- find backref */ +- --p; +- goto loopdone; +- } + if (PL_encoding && ender < 0x100) + goto recode_encoding; + break; +--- ./t/re/pat.t.orig 2013-09-03 14:34:06.277801336 +0000 ++++ ./t/re/pat.t 2013-09-03 14:34:13.645801323 +0000 +@@ -20,7 +20,7 @@ BEGIN { + require './test.pl'; + } + +-plan tests => 472; # Update this when adding/deleting tests. ++plan tests => 572; # Update this when adding/deleting tests. + + run_tests() unless caller; + +@@ -1380,6 +1380,23 @@ EOP + is ($s, 'XXcdXXX&', 'RT #119125 with /x'); + } + ++ { ++ # if we have 87 capture buffers defined then \87 should refer to the 87th. ++ # test that this is true for 1..100 ++ my $str= "aa"; ++ for my $i (1..100) { ++ my $pat= "a"; ++ $pat= "($pat)" for 1 .. $i; ++ $pat.="\\$i"; ++ eval { ++ ok($str=~/$pat/,"\\$i works with $i buffers"); ++ 1; ++ } or do { ++ ok(0,"\\$i works with $i buffers"); ++ }; ++ } ++ } ++ + } # End of sub run_tests + + 1; +--- ./t/re/re_tests.orig 2013-09-03 14:34:06.277801336 +0000 ++++ ./t/re/re_tests 2013-09-03 14:34:13.646801323 +0000 +@@ -1487,9 +1487,9 @@ abc\N{def - c - \\N{NAME} must be resolv + [a\o{1000}] \x{200} y $& \x{200} + + # The below were inserting a NULL +-\87 87 y $& 87 +-a\87 a87 y $& a87 +-a\97 a97 y $& a97 ++\87 87 c - Reference to nonexistent group in regex ++a\87 a87 c - Reference to nonexistent group in regex ++a\97 a97 c - Reference to nonexistent group in regex + + + # The below was inserting a NULL into the character class. +--- ./t/re/reg_mesg.t.orig 2013-09-03 14:34:06.277801336 +0000 ++++ ./t/re/reg_mesg.t 2013-09-03 14:34:13.646801323 +0000 +@@ -174,6 +174,9 @@ my @death = + 'm/[\o]/' => 'Missing braces on \o{} {#} m/[\o{#}]/', + 'm/[\o{}]/' => 'Number with no digits {#} m/[\o{}{#}]/', + 'm/(?^-i:foo)/' => 'Sequence (?^-...) not recognized {#} m/(?^-{#}i:foo)/', ++ 'm/\87/' => 'Reference to nonexistent group {#} m/\87{#}/', ++ 'm/a\87/' => 'Reference to nonexistent group {#} m/a\87{#}/', ++ 'm/a\97/' => 'Reference to nonexistent group {#} m/a\97{#}/', + ); + # Tests involving a user-defined charnames translator are in pat_advanced.t + +@@ -200,9 +203,6 @@ my @warning = ( + '/\018/' => '\'\018\' resolved to \'\o{1}8\' {#} m/\018{#}/', + '/[\08]/' => '\'\08\' resolved to \'\o{0}8\' {#} m/[\08{#}]/', + '/[\018]/' => '\'\018\' resolved to \'\o{1}8\' {#} m/[\018{#}]/', +- '/\87/' => 'Unrecognized escape \8 passed through {#} m/\8{#}7/', +- '/a\87/' => 'Unrecognized escape \8 passed through {#} m/a\8{#}7/', +- '/a\97/' => 'Unrecognized escape \9 passed through {#} m/a\9{#}7/', + '/(?=a)*/' => '(?=a)* matches null string many times {#} m/(?=a)*{#}/', + 'my $x = \'\m\'; qr/a$x/' => 'Unrecognized escape \m passed through {#} m/a\m{#}/', + '/\q/' => 'Unrecognized escape \q passed through {#} m/\q{#}/', diff --git a/perl.changes b/perl.changes index d692ffe..12001ed 100644 --- a/perl.changes +++ b/perl.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Tue Sep 3 15:30:23 CEST 2013 - mls@suse.de + +- update to perl-5.18.1 + * B has been upgraded from 1.42 to 1.42_01 + * Digest::SHA has been upgraded from 5.84 to 5.84_01 + * Module::CoreList has been upgraded from 2.89 to 2.96 + * A number of memory leaks in regexp have been plugged + * The debugger's man command been fixed + * @_ is now correctly visible in the debugger + * Lexical constants no longer crash when inlined + * Deep recursion warnings no longer crash lexical subroutines +- backport backref fix from upstream +- fix INC containing directories multiple times + ------------------------------------------------------------------- Thu Aug 8 14:51:42 UTC 2013 - dvaleev@suse.com diff --git a/perl.spec b/perl.spec index bb9b159..a7e74d9 100644 --- a/perl.spec +++ b/perl.spec @@ -21,9 +21,9 @@ Name: perl Summary: The Perl interpreter License: Artistic-1.0 or GPL-2.0+ Group: Development/Languages/Perl -Version: 5.18.0 +Version: 5.18.1 Release: 0 -%define pversion 5.18.0 +%define pversion 5.18.1 Url: http://www.perl.org/ Source: http://www.cpan.org/src/5.0/perl-%{version}.tar.gz Source1: %name-rpmlintrc @@ -39,6 +39,8 @@ Patch5: perl-HiRes.t-timeout.diff Patch6: perl-saverecontext.diff Patch7: perl-db6.diff Patch8: skip_time_hires.patch +Patch9: perl-reg89.diff +Patch10: perl-incfix.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: perl-base = %version #PreReq: %fillup_prereq @@ -56,6 +58,8 @@ Provides: perl = %pversion-%release Provides: perl-500 Provides: perl-Filter-Simple Provides: perl(:MODULE_COMPAT_%pversion) +%global versionlist 5.18.0 +Provides: perl(:MODULE_COMPAT_5.18.0) Obsoletes: perl-Filter-Simple Provides: perl-I18N-LangTags Obsoletes: perl-I18N-LangTags @@ -169,6 +173,8 @@ cp -p %{S:3} . %ifarch ppc ppc64 %patch8 -p1 %endif +%patch9 +%patch10 %build cp -a lib savelib @@ -184,9 +190,18 @@ options="-Doptimize='$RPM_OPT_FLAGS -Wall -pipe -mieee'" %ifarch ppc ppc64 options="$options -Duse64bitint" %endif +# this needs an installed perl, sorry +archname=%(perl -V:archname | sed "s!.*='!!;s!'.*!!") +test -n "$archname" +versionlist= +for v in %{?versionlist} ; do + test "$v" == none || versionlist="$versionlist $v/$archname $v" +done +test -n "$versionlist" || versionlist=none +versionlist=${versionlist# } # always use glibc's setenv options="$options -Accflags='-DPERL_USE_SAFE_PUTENV'" -options="$options -Dotherlibdirs=/usr/lib/perl5/site_perl -Dinc_version_list=none" +options="$options -Dotherlibdirs=/usr/lib/perl5/site_perl -Dinc_version_list='$versionlist'" chmod 755 ./configure.gnu ./configure.gnu --prefix=/usr -Dvendorprefix=/usr -Dinstallusrbinperl -Dusethreads -Di_db -Di_dbm -Di_ndbm -Di_gdbm -Dd_dbm_open -Duseshrplib=\'true\' $options make %{?_smp_mflags} @@ -245,8 +260,8 @@ rm $RPM_BUILD_ROOT/usr/lib/perl5/*/*/CORE/libperl.a #touch $cpa/perllocal.pod # test CVE-2007-5116 $RPM_BUILD_ROOT/usr/bin/perl -e '$r=chr(128)."\\x{100}";/$r/' -# test perl-regexp-refoverflow.diff -$RPM_BUILD_ROOT/usr/bin/perl -e '/\6666666666/' +# test perl-regexp-refoverflow.diff, should not crash or hang +$RPM_BUILD_ROOT/usr/bin/perl -e 'eval "/\\6666666666/"' %if 0 # remove unrelated target/os manpages rm $RPM_BUILD_ROOT/usr/share/man/man1/perlaix.1*