From: Wang Xiang W Date: Wed, 8 Apr 2020 15:26:05 +0000 (-0400) Subject: hscollider: fix UTF8 check for patterns X-Git-Tag: v5.3.0^2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=934473f4061d99c13ce89feb3fa59fb1d23553b9;p=thirdparty%2Fvectorscan.git hscollider: fix UTF8 check for patterns --- diff --git a/tools/hscollider/GroundTruth.cpp b/tools/hscollider/GroundTruth.cpp index f30a8f5e..a2673063 100644 --- a/tools/hscollider/GroundTruth.cpp +++ b/tools/hscollider/GroundTruth.cpp @@ -241,6 +241,13 @@ void addCallout(string &re) { re.append("\\E)(?C)"); } +static +bool isUtf8(const CompiledPcre &compiled) { + unsigned long int options = 0; + pcre_fullinfo(compiled.bytecode, NULL, PCRE_INFO_OPTIONS, &options); + return options & PCRE_UTF8; +} + unique_ptr GroundTruth::compile(unsigned id, bool no_callouts) { bool highlander = false; @@ -380,6 +387,8 @@ GroundTruth::compile(unsigned id, bool no_callouts) { throw PcreCompileFailure(oss.str()); } + compiled->utf8 |= isUtf8(*compiled); + return compiled; } @@ -451,13 +460,6 @@ int scanBasic(const CompiledPcre &compiled, const string &buffer, return ret; } -static -bool isUtf8(const CompiledPcre &compiled) { - unsigned long int options = 0; - pcre_fullinfo(compiled.bytecode, NULL, PCRE_INFO_OPTIONS, &options); - return options & PCRE_UTF8; -} - static CaptureVec makeCaptureVec(const vector &ovector, int ret) { assert(ret > 0);