[pcre/f19] Fix jitted range check

Petr Pisar ppisar at fedoraproject.org
Thu Jan 9 13:56:45 UTC 2014


commit aba8eea6e977ef8c4616e333d3c46031c1be47b6
Author: Petr Písař <ppisar at redhat.com>
Date:   Thu Jan 9 13:46:19 2014 +0100

    Fix jitted range check

 pcre-8.34-Fix-range-check-in-JIT-path.patch |   55 +++++++++++++++++++++++++++
 pcre.spec                                   |    8 +++-
 2 files changed, 62 insertions(+), 1 deletions(-)
---
diff --git a/pcre-8.34-Fix-range-check-in-JIT-path.patch b/pcre-8.34-Fix-range-check-in-JIT-path.patch
new file mode 100644
index 0000000..6ee6103
--- /dev/null
+++ b/pcre-8.34-Fix-range-check-in-JIT-path.patch
@@ -0,0 +1,55 @@
+From c061f6a865a473cf93aae1e6a0ccd2325509a6b2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar at redhat.com>
+Date: Thu, 9 Jan 2014 13:39:28 +0100
+Subject: [PATCH] Fix range check in JIT path
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Jitted range check was wrong:
+
+  re> /[efij]/S+
+data> e
+No match
+
+while interpretted path is correct:
+
+  re> /[efij]/
+data> e
+ 0: e
+
+This fix is part of:
+
+commit c07887b22a83fba842e88889c9e57a622b9ee439
+Author: zherczeg <zherczeg at 2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date:   Sun Dec 22 20:47:08 2013 +0000
+
+    The auto-possessification of character sets were improved. The JIT compiler also optimizes more character set checks.
+
+    git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1415 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+<http://bugs.exim.org/show_bug.cgi?id=1423>
+
+Signed-off-by: Petr Písař <ppisar at redhat.com>
+---
+ pcre_jit_compile.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/pcre_jit_compile.c b/pcre_jit_compile.c
+index d070263..47447da 100644
+--- a/pcre_jit_compile.c
++++ b/pcre_jit_compile.c
+@@ -3573,7 +3573,9 @@ switch(ranges[0])
+       }
+     return TRUE;
+     }
+-  if ((ranges[3] - ranges[2]) == (ranges[5] - ranges[4]) && is_powerof2(ranges[4] - ranges[2]))
++  if ((ranges[3] - ranges[2]) == (ranges[5] - ranges[4])
++      && (ranges[2] | (ranges[4] - ranges[2])) == ranges[4]
++      && is_powerof2(ranges[4] - ranges[2]))
+     {
+     if (readch)
+       read_char(common);
+-- 
+1.8.3.1
+
diff --git a/pcre.spec b/pcre.spec
index 4bc26cb..ff59497 100644
--- a/pcre.spec
+++ b/pcre.spec
@@ -2,7 +2,7 @@
 #%%global rcversion RC1
 Name: pcre
 Version: 8.32
-Release: %{?rcversion:0.}7%{?rcversion:.%rcversion}%{?dist}
+Release: %{?rcversion:0.}8%{?rcversion:.%rcversion}%{?dist}
 %global myversion %{version}%{?rcversion:-%rcversion}
 Summary: Perl-compatible regular expression library
 Group: System Environment/Libraries
@@ -24,6 +24,8 @@ Patch5: pcre-8.33-RC1-Fix-pcretest-crash-with-a-data-line-longer-than-6553.patch
 # Fix passing too small output vector to pcre_dfa_exec, in upstream after
 # 8.33-RC1, bug #963284
 Patch6: pcre-8.33-RC1-Fix-segfault-when-pcre_dfa_exec-is-called-with-an-ou.patch
+# Fix jitted range check, in upstream after 8.34, bug #1048097
+Patch7: pcre-8.34-Fix-range-check-in-JIT-path.patch
 BuildRequires: readline-devel
 # New libtool to get rid of rpath
 BuildRequires: autoconf, automake, libtool
@@ -70,6 +72,7 @@ Utilities demonstrating PCRE capabilities like pcregrep or pcretest.
 %patch4 -p1 -b .pcregrep_empty_line
 %patch5 -p1 -b .pcretest_grow_buffer
 %patch6 -p1 -b .vector_size
+%patch7 -p1 -b .jitted_range_check
 # Because of rpath patch
 libtoolize --copy --force && autoreconf -vif
 # One contributor's name is non-UTF-8
@@ -133,6 +136,9 @@ make check
 %{_mandir}/man1/pcretest.*
 
 %changelog
+* Thu Jan 09 2014 Petr Pisar <ppisar at redhat.com> - 8.32-8
+- Fix jitted range check (bug #1048097)
+
 * Mon Jun 03 2013 Petr Pisar <ppisar at redhat.com> - 8.32-7
 - Disable unsupported JIT on aarch64 (bug #969693)
 


More information about the scm-commits mailing list