diff options
author | ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> | 2017-11-16 18:00:54 +0000 |
---|---|---|
committer | ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> | 2017-11-16 18:00:54 +0000 |
commit | 22f62c95b3269f8a17e90283541e33c1f6dcaab9 (patch) | |
tree | 0e2e3685ec38c717c22822c7adeea7f384cc71ef | |
parent | bfd4f2b52faba20be338e06ac23cb1061ec4c777 (diff) | |
download | pcre-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-- | ChangeLog | 5 | ||||
-rw-r--r-- | pcre_dfa_exec.c | 4 |
2 files changed, 8 insertions, 1 deletions
@@ -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 |