diff --git a/perl-5.24.0-perl-129350-anchored-floating-substrings-must-be-utf.patch b/perl-5.24.0-perl-129350-anchored-floating-substrings-must-be-utf.patch new file mode 100644 index 0000000..9880f2d --- /dev/null +++ b/perl-5.24.0-perl-129350-anchored-floating-substrings-must-be-utf.patch @@ -0,0 +1,56 @@ +From 62130748594f803da49b6abf3e352e51148a3886 Mon Sep 17 00:00:00 2001 +From: Hugo van der Sanden +Date: Tue, 4 Oct 2016 14:40:11 +0100 +Subject: [PATCH] anchored/floating substrings must be utf8 if target is +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Ported to 5.24.0: + +commit 2814f4b3549f665a6f9203ac9e890ae1e415e0dc +Author: Hugo van der Sanden +Date: Tue Oct 4 14:40:11 2016 +0100 + + [perl #129350] anchored/floating substrings must be utf8 if target is + + If the target is utf8 and either the anchored or floating substrings + are not, we need to create utf8 copies to check against. The state + of the two substrings may not be the same, but we were only testing + whichever we planned to check first. + +Signed-off-by: Petr Písař +--- + regexec.c | 3 ++- + t/re/re_tests | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/regexec.c b/regexec.c +index cdaa95c..38ff44a 100644 +--- a/regexec.c ++++ b/regexec.c +@@ -703,7 +703,8 @@ Perl_re_intuit_start(pTHX_ + reginfo->poscache_maxiter = 0; + + if (utf8_target) { +- if (!prog->check_utf8 && prog->check_substr) ++ if ((!prog->anchored_utf8 && prog->anchored_substr) ++ || (!prog->float_utf8 && prog->float_substr)) + to_utf8_substr(prog); + check = prog->check_utf8; + } else { +diff --git a/t/re/re_tests b/t/re/re_tests +index 7e8522d..2f4d00c 100644 +--- a/t/re/re_tests ++++ b/t/re/re_tests +@@ -1968,6 +1968,7 @@ ab(?#Comment){2}c abbc y $& abbc + (?:.||)(?|)000000000@ 000000000@ y $& 000000000@ # [perl #126405] + aa$|a(?R)a|a aaa y $& aaa # [perl 128420] recursive matches + (?:\1|a)([bcd])\1(?:(?R)|e)\1 abbaccaddedcb y $& abbaccaddedcb # [perl 128420] recursive match with backreferences ++\b\z0*\x{100} .\x{100} n - - # [perl #129350] crashed in intuit_start + + # Keep these lines at the end of the file + # vim: softtabstop=0 noexpandtab +-- +2.7.4 + diff --git a/perl.spec b/perl.spec index c7db416..ddfb586 100644 --- a/perl.spec +++ b/perl.spec @@ -199,6 +199,10 @@ Patch51: perl-5.25.4-clean-up-gv_fetchmethod_pvn_flags-rename-nsplit-to-l Patch52: perl-5.25.4-fix-129267-rework-gv_fetchmethod_pvn_flags-separator.patch Patch53: perl-5.25.4-perl-129267-Test-for-gv_fetchmethod-buffer-overrun.patch +# Fix crash when matching UTF-8 string with non-UTF-8 substrings, RT#129350, +# in upstream after 5.25.5 +Patch54: perl-5.24.0-perl-129350-anchored-floating-substrings-must-be-utf.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 @@ -2875,6 +2879,7 @@ Perl extension for Version Objects %patch51 -p1 %patch52 -p1 %patch53 -p1 +%patch54 -p1 %patch200 -p1 %patch201 -p1 @@ -2919,6 +2924,7 @@ perl -x patchlevel.h \ 'Fedora Patch51: Fix string overrun in Perl_gv_fetchmethod_pvn_flags (RT#129267)' \ 'Fedora Patch52: Fix string overrun in Perl_gv_fetchmethod_pvn_flags (RT#129267)' \ 'Fedora Patch53: Fix string overrun in Perl_gv_fetchmethod_pvn_flags (RT#129267)' \ + 'Fedora Patch54: Fix crash when matching UTF-8 string with non-UTF-8 substrings (RT#129350)' \ '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} @@ -5201,6 +5207,7 @@ popd - Fix crash in "evalbytes S" (RT#129196) - Fix crash in splice (RT#129164, RT#129166, RT#129167) - Fix string overrun in Perl_gv_fetchmethod_pvn_flags (RT#129267) +- Fix crash when matching UTF-8 string with non-UTF-8 substrings (RT#129350) * Fri Sep 02 2016 Petr Pisar - 4:5.24.0-378 - perl-core depends on Parse::CPAN::Meta module instead of package name to allow