[pcre] Fix look-behind assertion in UTF-8 JIT mode

Petr Pisar ppisar at fedoraproject.org
Thu Apr 5 15:39:50 UTC 2012


commit 949ac43e5975f6a83623ff2e787d6ec6e1f03c87
Author: Petr Písař <ppisar at redhat.com>
Date:   Thu Apr 5 17:36:02 2012 +0200

    Fix look-behind assertion in UTF-8 JIT mode

 ...x-look-behind-assertion-in-UTF-8-JIT-mode.patch |   59 ++++++++++++++++++++
 pcre.spec                                          |    8 ++-
 2 files changed, 66 insertions(+), 1 deletions(-)
---
diff --git a/pcre-8.30-Fix-look-behind-assertion-in-UTF-8-JIT-mode.patch b/pcre-8.30-Fix-look-behind-assertion-in-UTF-8-JIT-mode.patch
new file mode 100644
index 0000000..6d5cabd
--- /dev/null
+++ b/pcre-8.30-Fix-look-behind-assertion-in-UTF-8-JIT-mode.patch
@@ -0,0 +1,59 @@
+From 918ed08b4415c8f9a94c22588a328c712317dea9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar at redhat.com>
+Date: Thu, 5 Apr 2012 17:30:16 +0200
+Subject: [PATCH] Fix look-behind assertion in UTF-8 JIT mode
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This is back-port of upstream commit for pcre-8.30:
+r953 | zherczeg | 2012-03-29 19:41:57 +0200 (Čt, 29 bře 2012) | 1 line
+Fixed a bug for backward assertions with REVERSE 0 in the JIT compiler
+---
+ pcre_jit_compile.c   |    3 ++-
+ testdata/testinput5  |    3 +++
+ testdata/testoutput5 |    4 ++++
+ 3 files changed, 9 insertions(+), 1 deletions(-)
+
+diff --git a/pcre_jit_compile.c b/pcre_jit_compile.c
+index 97d227c..dfb78a7 100644
+--- a/pcre_jit_compile.c
++++ b/pcre_jit_compile.c
+@@ -3417,7 +3417,8 @@ switch(type)
+ 
+   case OP_REVERSE:
+   length = GET(cc, 0);
+-  SLJIT_ASSERT(length > 0);
++  if (length == 0)
++    return cc + LINK_SIZE;
+   OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0);
+ #ifdef SUPPORT_UTF
+   if (common->utf)
+diff --git a/testdata/testinput5 b/testdata/testinput5
+index 4f7cb32..de41fce 100644
+--- a/testdata/testinput5
++++ b/testdata/testinput5
+@@ -691,4 +691,7 @@
+     \x{2027}\x{2030}\x{2028}\x{2029}
+     \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
+ 
++/(?<!^)ETA/8
++    ETA
++
+ /-- End of testinput5 --/
+diff --git a/testdata/testoutput5 b/testdata/testoutput5
+index 3c90ea5..693b8cd 100644
+--- a/testdata/testoutput5
++++ b/testdata/testoutput5
+@@ -1649,4 +1649,8 @@ Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7
+     \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
+  0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
+ 
++/(?<!^)ETA/8
++    ETA
++No match
++
+ /-- End of testinput5 --/
+-- 
+1.7.7.6
+
diff --git a/pcre.spec b/pcre.spec
index 832cef8..0455b4c 100644
--- a/pcre.spec
+++ b/pcre.spec
@@ -2,7 +2,7 @@
 #%%global rcversion RC1
 Name: pcre
 Version: 8.30
-Release: %{?rcversion:0.}2%{?rcversion:.%rcversion}%{?dist}
+Release: %{?rcversion:0.}3%{?rcversion:.%rcversion}%{?dist}
 %global myversion %{version}%{?rcversion:-%rcversion}
 Summary: Perl-compatible regular expression library
 Group: System Environment/Libraries
@@ -13,6 +13,8 @@ Source: ftp://ftp.csx.cam.ac.uk/pub/software/programming/%{name}/%{?rcversion:Te
 Patch0: pcre-8.21-multilib.patch
 # Refused by upstream, bug #675477
 Patch1: pcre-8.30-refused_spelling_terminated.patch
+# Bug #810314, fixed in upstream after 8.30
+Patch2: pcre-8.30-Fix-look-behind-assertion-in-UTF-8-JIT-mode.patch
 BuildRequires: readline-devel
 # New libtool to get rid of rpath
 BuildRequires: autoconf, automake, libtool
@@ -52,6 +54,7 @@ Utilities demonstrating PCRE capabilities like pcregrep or pcretest.
 # Get rid of rpath
 %patch0 -p1 -b .multilib
 %patch1 -p1 -b .terminated_typos
+%patch2 -p1 -b .lookbehind_assertion
 # Because of rpath patch
 libtoolize --copy --force && autoreconf
 # One contributor's name is non-UTF-8
@@ -115,6 +118,9 @@ make check
 %{_mandir}/man1/pcretest.*
 
 %changelog
+* Thu Apr 05 2012 Petr Pisar <ppisar at redhat.com> - 8.30-3
+- Fix look-behind assertion in UTF-8 JIT mode (bug #810314)
+
 * Tue Feb 28 2012 Petr Pisar <ppisar at redhat.com> - 8.30-2
 - Remove old libpcre.so.0 from distribution
 - Move library to /usr


More information about the scm-commits mailing list