diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
commit | 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch) | |
tree | e5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/regex/test/de_fuzz | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/regex/test/de_fuzz')
-rw-r--r-- | src/boost/libs/regex/test/de_fuzz/Jamfile.v2 | 37 | ||||
-rw-r--r-- | src/boost/libs/regex/test/de_fuzz/dictionary.txt | 195 | ||||
-rw-r--r-- | src/boost/libs/regex/test/de_fuzz/narrow.cpp | 20 | ||||
-rw-r--r-- | src/boost/libs/regex/test/de_fuzz/wide.cpp | 21 |
4 files changed, 273 insertions, 0 deletions
diff --git a/src/boost/libs/regex/test/de_fuzz/Jamfile.v2 b/src/boost/libs/regex/test/de_fuzz/Jamfile.v2 new file mode 100644 index 00000000..4306ba7c --- /dev/null +++ b/src/boost/libs/regex/test/de_fuzz/Jamfile.v2 @@ -0,0 +1,37 @@ +# copyright John Maddock 2003 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt. + +import testing ; + +lib Fuzzer : : <search>. ; + +run narrow.cpp [ glob ../../src/*.cpp ] Fuzzer + : # additional args + -dict=dictionary.txt -workers=3 corpus -runs=5000 + : # test-files + : # requirements + <toolset>clang <cxxflags>-fsanitize-coverage=trace-pc-guard + <cxxflags>-fsanitize=address <cxxflags>-fsanitize=undefined + <cxxflags>-fno-sanitize-recover=undefined <cxxflags>-fno-optimize-sibling-calls + <cxxflags>-fno-omit-frame-pointer + <include>../../../.. + <linkflags>-fsanitize=address <linkflags>-fsanitize=undefined + debug +; + +run wide.cpp [ glob ../../src/*.cpp ] Fuzzer + : # additional args + -dict=dictionary.txt -workers=3 corpus -runs=5000 + : # test-files + : # requirements + <toolset>clang <cxxflags>-fsanitize-coverage=trace-pc-guard + <cxxflags>-fsanitize=address <cxxflags>-fsanitize=undefined + <cxxflags>-fno-sanitize-recover=undefined <cxxflags>-fno-optimize-sibling-calls + <cxxflags>-fno-omit-frame-pointer + <include>../../../.. + <linkflags>-fsanitize=address <linkflags>-fsanitize=undefined + debug +; + diff --git a/src/boost/libs/regex/test/de_fuzz/dictionary.txt b/src/boost/libs/regex/test/de_fuzz/dictionary.txt new file mode 100644 index 00000000..bd145050 --- /dev/null +++ b/src/boost/libs/regex/test/de_fuzz/dictionary.txt @@ -0,0 +1,195 @@ + +r1="." +r2="[" +r3="{" +r4="}" +r5="(" +r6=")" +r7="\\" +r8="*" +r9="+" +r10="?" +r11="|" +r12="^" +r13="$" +r14="]" +r15="{4}" +r15="{4,}" +r16="{4, 10}" +r17="*?" +r18="+?" +r19="??" +r20="*+" +r21="++" +r22="?+" +r23="{4}?" +r24="{4,}?" +r25="{4, 10}?" +r26="{4}" +r27="{4,}" +r28="{4, 10}" +r29="\\1" +r30="g1" +r31="g{1}" +r32="g-1" +r33="g{one}" +r34="\\k<one>" +r35="[abc]" +r36="[a-c]" +r36="[^abc]" +r37="[[:alnum:]]" +r38="[[:alpha:]]" +r39="[[:blank:]]" +r40="[[:cntrl:]]" +r41="[[:d:]]" +r42="[[:digit:]]" +r43="[[:grpah:]]" +r44="[[:l:]]" +r45="[[:lower:]]" +r46="[[:print:]]" +r47="[[:punct:]]" +r48="[[:s:]]" +r49="[[:space:]]" +r50="[[:unicode:]]" +r51="[[:u:]]" +r52="[[:upper:]]" +r53="[[:w:]]" +r54="[[:word:]]" +r55="[[:xdigit:]]" +r56="[[:ASCII:]]" +r57="[[:Any:]]" +r58="[[:Assigned:]]" +r59="[[:Other:]]" +r60="[[:Control:]]" +r61="[[:Format:]]" +r62="[[:Not Assigned:]]" +r63="[[:Private Use:]]" +r64="[[:Surrogate:]]" +r65="[[:Letter:]]" +r66="[[:Lowercase Letter:]]" +r67="[[:Modifier Letter:]]" +r68="[[:Other Letter:]]" +r69="[[:Titlecase:]]" +r70="[[:Uppercae Letter:]]" +r71="[[:Mark:]]" +r72="[[:Mc:]]" +r73="[[:Me:]]" +r74="[[:Mn:]]" +r75="[[:N*:]]" +r76="[[:Md:]]" +r77="[[:Nl:]]" +r78="[[:No:]]" +r79="[[:P*:]]" +r80="[[:Pc:]]" +r81="[[:Pd:]]" +r82="[[:Pd:]]" +r83="[[:Pe:]]" +r84="[[:Pf:]]" +r85="[[:Pi:]]" +r86="[[:Po:]]" +r87="[[:Ps:]]" +r88="[[:S*:]]" +r89="[[:Sc:]]" +r90="[[:Sk:]]" +r91="[[:Sm:]]" +r92="[[:So:]]" +r93="[[:Z*:]]" +r94="[[:Zl:]]" +r95="[[:Zp:]]" +r96="[[:Zs:]]" +r98="[[.NUL.]]" +r99="[[.SOH.]]" +r100="[[.alert.]]" +r101="[[=a=]]" +r102="\\a" +r103="\\e" +r104="\\r" +r105="\\n" +r106="\\t" +r107="\\v" +r108="\\b" +r109="\\C9" +r110="\\xcf" +r111="\\x{13}" +r112="\\x{01f4}" +r113="\\0456" +r114="\\N{newline}" +r115="\\d" +r116="\\l" +r117="\\s" +r118="\\u" +r119="\\w" +r120="\\h" +r121="\\v" +r122="\\D" +r123="\\L" +r124="\\S" +r125="\\U" +r126="\\W" +r127="\\H" +r128="\\V" +r129="\\pd" +r130="\\p{digit}" +r131="\\Pd" +r132="\\P{digit}" +r133="\\<" +r134="\\>" +r135="\\b" +r136="\\B" +r137="\\`" +r138="\\'" +r139="\\A" +r140="\\z" +r141="\\Z" +r142="\\G" +r143="\\Q" +r144="\\E" +r145="\\C" +r146="\\R" +r147="\\K" +r148="(?<one>abc)" +r149="(?<one>" +r150="(?'one'abc)" +r151="(?'one'" +r152="(?#annansnsbdgh)" +r153="(?i)" +r154="(?-i)" +r155="(?s)" +r156="(?-s)" +r157="(?m)" +r158="(?-m)" +r153="(?x)" +r154="(?-x)" +r153="(?i:abcd)" +r154="(?-i:abcd)" +r155="(?:" +r156="(?|" +r157="(?=" +r158="(?!" +r159="(?<=" +r160="(?<!" +r170="(>" +r171="(?1)" +r172="(?-1)" +r173="(?+1)" +r174="(?R)" +r175="(?0)" +r176="(?&one)" +r177="(?(?=\\>)" +r178="(?(?!\\>)" +r179="(?(1)" +r180="(?(<one>)" +r181="(?('one')" +r182="(?(R)" +r183="(?(R1)" +r184="(?(R&one)" +r185="(?(DEFINE)" +r186="(*PRUNE)" +r187="(*SKIP)" +r188="(*THEN)" +r189="(*COMMIT)" +r190="(*FAIL)" +r191="(*ACCEPT)" + + + diff --git a/src/boost/libs/regex/test/de_fuzz/narrow.cpp b/src/boost/libs/regex/test/de_fuzz/narrow.cpp new file mode 100644 index 00000000..448c6b78 --- /dev/null +++ b/src/boost/libs/regex/test/de_fuzz/narrow.cpp @@ -0,0 +1,20 @@ + +#include <boost/regex.hpp> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) +{ + if(Size < 2) + return 0; + try{ + size_t len = (Data[1] << 8) | Data[0]; + if(len > Size - 2) len = Size - 2; + std::string str((char*)(Data + 2), len); + std::string text((char*)(Data + len), Size - len); + boost::regex e(str); + boost::smatch what; + regex_search(text, what, e, boost::match_default|boost::match_partial); + } + catch(const std::exception&){} + return 0; +} + diff --git a/src/boost/libs/regex/test/de_fuzz/wide.cpp b/src/boost/libs/regex/test/de_fuzz/wide.cpp new file mode 100644 index 00000000..b719adaa --- /dev/null +++ b/src/boost/libs/regex/test/de_fuzz/wide.cpp @@ -0,0 +1,21 @@ + +#include <boost/regex.hpp> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) +{ + if(Size < 2) + return 0; + std::vector<wchar_t> v(Data, Data + Size); + try{ + size_t len = (Data[1] << 8) | Data[0]; + if(len > Size - 2) len = Size - 2; + std::wstring str(&v[0] + 2, len); + std::wstring text(&v[0] + len, Size - len); + boost::wregex e(str); + boost::wsmatch what; + regex_search(text, what, e, boost::match_default|boost::match_partial); + } + catch(const std::exception&){} + return 0; +} + |