diff --git a/test/de_fuzz/dictionary.txt b/test/de_fuzz/dictionary.txt new file mode 100644 index 00000000..d434bf4b --- /dev/null +++ b/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" +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="(?abc)" +r149="(?" +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="(?" +r171="(?1)" +r172="(?-1)" +r173="(?+1)" +r174="(?R)" +r175="(?0)" +r176="(?&one)" +r177="(?(?=\>)" +r178="(?(?!\>)" +r179="(?(1)" +r180="(?()" +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/test/de_fuzz/narrow.cpp b/test/de_fuzz/narrow.cpp new file mode 100644 index 00000000..849ec7b2 --- /dev/null +++ b/test/de_fuzz/narrow.cpp @@ -0,0 +1,19 @@ + +#include + +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]; + 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; +} +