X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=lib%2FFuzzer%2Ftest%2FSwitchTest.cpp;h=9f921fb6098628fc20363935c288836b19e8c281;hp=0f2319b2cc9ed44c00fd0d10ca6e563b7ac8a602;hb=f7aa7e6f4989c7361a74baf3aadaa7f8f1e1c111;hpb=c225eda1f1cfb4dc46cea886af8830464ee4eb01 diff --git a/lib/Fuzzer/test/SwitchTest.cpp b/lib/Fuzzer/test/SwitchTest.cpp index 0f2319b2cc9..9f921fb6098 100644 --- a/lib/Fuzzer/test/SwitchTest.cpp +++ b/lib/Fuzzer/test/SwitchTest.cpp @@ -25,9 +25,28 @@ bool Switch(const uint8_t *Data, size_t Size) { return false; } +bool ShortSwitch(const uint8_t *Data, size_t Size) { + short X; + if (Size < sizeof(short)) return false; + memcpy(&X, Data, sizeof(short)); + switch(X) { + case 42: Sink = __LINE__; break; + case 402: Sink = __LINE__; break; + case 4002: Sink = __LINE__; break; + case 5002: Sink = __LINE__; break; + case 7002: Sink = __LINE__; break; + case 9002: Sink = __LINE__; break; + case 14002: Sink = __LINE__; break; + case 21402: return true; + } + return false; +} + extern "C" void LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { - if (Switch(Data, Size) && Size >= 12 && - Switch(Data + 4, Size - 4)) { + if (Size >= 4 && Switch(Data, Size) && + Size >= 12 && Switch(Data + 4, Size - 4) && + Size >= 14 && ShortSwitch(Data + 12, 2) + ) { fprintf(stderr, "BINGO; Found the target, exiting\n"); exit(1); }