summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>2017-11-16 18:00:54 +0000
committerph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>2017-11-16 18:00:54 +0000
commit22f62c95b3269f8a17e90283541e33c1f6dcaab9 (patch)
tree0e2e3685ec38c717c22822c7adeea7f384cc71ef
parentbfd4f2b52faba20be338e06ac23cb1061ec4c777 (diff)
downloadpcre-22f62c95b3269f8a17e90283541e33c1f6dcaab9.tar.gz
Fix caseless "not" bug for wide character in DFA matching when UCP not defined.
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1714 2f5784b3-3f2a-0410-8824-cb99058d5e15
-rw-r--r--ChangeLog5
-rw-r--r--pcre_dfa_exec.c4
2 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6598469..bcd0fc4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,6 +16,11 @@ processing files with the -r option, and also (some very odd code) truncating
path names to 512 characters. There is now a check on the absolute length of
full path file names, which may be up to 2047 characters long.
+4. Using pcre_dfa_exec(), in UTF mode when UCP support was not defined, there
+was the possibility of a false positive match when caselessly matching a "not
+this character" item such as [^\x{1234}] (with a code point greater than 127)
+because the "other case" variable was not being initialized.
+
Version 8.41 05-July-2017
-------------------------
diff --git a/pcre_dfa_exec.c b/pcre_dfa_exec.c
index bc09ced..f333381 100644
--- a/pcre_dfa_exec.c
+++ b/pcre_dfa_exec.c
@@ -2287,12 +2287,14 @@ for (;;)
case OP_NOTI:
if (clen > 0)
{
- unsigned int otherd;
+ pcre_uint32 otherd;
#ifdef SUPPORT_UTF
if (utf && d >= 128)
{
#ifdef SUPPORT_UCP
otherd = UCD_OTHERCASE(d);
+#else
+ otherd = d;
#endif /* SUPPORT_UCP */
}
else