diff options
Diffstat (limited to 'lib/Fuzzer/FuzzerUtilWindows.cpp')
-rw-r--r-- | lib/Fuzzer/FuzzerUtilWindows.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/Fuzzer/FuzzerUtilWindows.cpp b/lib/Fuzzer/FuzzerUtilWindows.cpp index 3ca1f2c8f562..08bb3cf3be15 100644 --- a/lib/Fuzzer/FuzzerUtilWindows.cpp +++ b/lib/Fuzzer/FuzzerUtilWindows.cpp @@ -28,7 +28,7 @@ namespace fuzzer { static const FuzzingOptions* HandlerOpt = nullptr; -LONG CALLBACK ExceptionHandler(PEXCEPTION_POINTERS ExceptionInfo) { +static LONG CALLBACK ExceptionHandler(PEXCEPTION_POINTERS ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: @@ -126,10 +126,7 @@ void SetSignalHandler(const FuzzingOptions& Options) { if (Options.HandleSegv || Options.HandleBus || Options.HandleIll || Options.HandleFpe) - if (!AddVectoredExceptionHandler(1, ExceptionHandler)) { - Printf("libFuzzer: AddVectoredExceptionHandler failed.\n"); - exit(1); - } + SetUnhandledExceptionFilter(ExceptionHandler); if (Options.HandleAbrt) if (SIG_ERR == signal(SIGABRT, CrashHandler)) { @@ -178,6 +175,17 @@ const void *SearchMemory(const void *Data, size_t DataLen, const void *Patt, return NULL; } +std::string DisassembleCmd(const std::string &FileName) { + if (ExecuteCommand("dumpbin /summary > nul") == 0) + return "dumpbin /disasm " + FileName; + Printf("libFuzzer: couldn't find tool to disassemble (dumpbin)\n"); + exit(1); +} + +std::string SearchRegexCmd(const std::string &Regex) { + return "findstr /r \"" + Regex + "\""; +} + } // namespace fuzzer #endif // LIBFUZZER_WINDOWS |