|
|
cb67f2 |
From c061f6a865a473cf93aae1e6a0ccd2325509a6b2 Mon Sep 17 00:00:00 2001
|
|
|
cb67f2 |
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
|
|
cb67f2 |
Date: Thu, 9 Jan 2014 13:39:28 +0100
|
|
|
cb67f2 |
Subject: [PATCH] Fix range check in JIT path
|
|
|
cb67f2 |
MIME-Version: 1.0
|
|
|
cb67f2 |
Content-Type: text/plain; charset=UTF-8
|
|
|
cb67f2 |
Content-Transfer-Encoding: 8bit
|
|
|
cb67f2 |
|
|
|
cb67f2 |
Jitted range check was wrong:
|
|
|
cb67f2 |
|
|
|
cb67f2 |
re> /[efij]/S+
|
|
|
cb67f2 |
data> e
|
|
|
cb67f2 |
No match
|
|
|
cb67f2 |
|
|
|
cb67f2 |
while interpretted path is correct:
|
|
|
cb67f2 |
|
|
|
cb67f2 |
re> /[efij]/
|
|
|
cb67f2 |
data> e
|
|
|
cb67f2 |
0: e
|
|
|
cb67f2 |
|
|
|
cb67f2 |
This fix is part of:
|
|
|
cb67f2 |
|
|
|
cb67f2 |
commit c07887b22a83fba842e88889c9e57a622b9ee439
|
|
|
cb67f2 |
Author: zherczeg <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>
|
|
|
cb67f2 |
Date: Sun Dec 22 20:47:08 2013 +0000
|
|
|
cb67f2 |
|
|
|
cb67f2 |
The auto-possessification of character sets were improved. The JIT compiler also optimizes more character set checks.
|
|
|
cb67f2 |
|
|
|
cb67f2 |
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1415 2f5784b3-3f2a-0410-8824-cb99058d5e15
|
|
|
cb67f2 |
|
|
|
cb67f2 |
<http://bugs.exim.org/show_bug.cgi?id=1423>
|
|
|
cb67f2 |
|
|
|
cb67f2 |
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|
|
cb67f2 |
---
|
|
|
cb67f2 |
pcre_jit_compile.c | 4 +++-
|
|
|
cb67f2 |
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
cb67f2 |
|
|
|
cb67f2 |
diff --git a/pcre_jit_compile.c b/pcre_jit_compile.c
|
|
|
cb67f2 |
index d070263..47447da 100644
|
|
|
cb67f2 |
--- a/pcre_jit_compile.c
|
|
|
cb67f2 |
+++ b/pcre_jit_compile.c
|
|
|
cb67f2 |
@@ -3573,7 +3573,9 @@ switch(ranges[0])
|
|
|
cb67f2 |
}
|
|
|
cb67f2 |
return TRUE;
|
|
|
cb67f2 |
}
|
|
|
cb67f2 |
- if ((ranges[3] - ranges[2]) == (ranges[5] - ranges[4]) && is_powerof2(ranges[4] - ranges[2]))
|
|
|
cb67f2 |
+ if ((ranges[3] - ranges[2]) == (ranges[5] - ranges[4])
|
|
|
cb67f2 |
+ && (ranges[2] | (ranges[4] - ranges[2])) == ranges[4]
|
|
|
cb67f2 |
+ && is_powerof2(ranges[4] - ranges[2]))
|
|
|
cb67f2 |
{
|
|
|
cb67f2 |
if (readch)
|
|
|
cb67f2 |
read_char(common);
|
|
|
cb67f2 |
--
|
|
|
cb67f2 |
1.8.3.1
|
|
|
cb67f2 |
|