diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index e287568d22..0a923db03c 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -334,7 +334,7 @@ jobs: - ./fuzzers/fuzzbench - ./fuzzers/libfuzzer_stb_image - ./fuzzers/fuzzbench_forkserver - - ./fuzzers/libfuzzer_windows_asan + # - ./fuzzers/libfuzzer_windows_asan - ./fuzzers/baby_fuzzer_minimizing # - ./fuzzers/qemu_coverage - ./fuzzers/frida_executable_libpng diff --git a/fuzzers/libfuzzer_windows_asan/Makefile.toml b/fuzzers/libfuzzer_windows_asan/Makefile.toml index 43c0e3bcb1..16112f488d 100644 --- a/fuzzers/libfuzzer_windows_asan/Makefile.toml +++ b/fuzzers/libfuzzer_windows_asan/Makefile.toml @@ -81,6 +81,11 @@ windows_alias = "test_windows" # TODO [tasks.test_windows] script_runner = "@shell" script=''' +start "" "${FUZZER_NAME}.exe" +start "" "${FUZZER_NAME}.exe" +#ping is for timeout +ping -n 10 127.0.0.1>NUL && taskkill /im ${FUZZER_NAME}.exe /F +>nul 2>nul dir /a-d "crashes\*" && (echo Files exist) || (exit /b 1337) ''' dependencies = [ "fuzzer" ] diff --git a/fuzzers/libfuzzer_windows_asan/harness.cpp b/fuzzers/libfuzzer_windows_asan/harness.cpp index 4c4e3b0f72..46004dca58 100644 --- a/fuzzers/libfuzzer_windows_asan/harness.cpp +++ b/fuzzers/libfuzzer_windows_asan/harness.cpp @@ -11,6 +11,6 @@ void asan_crash() { extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { // abort(); - asan_crash(); + if (size == 10) { asan_crash(); } return 0; } diff --git a/libafl_bolts/src/os/windows_exceptions.rs b/libafl_bolts/src/os/windows_exceptions.rs index 9105bed5dd..a740999abe 100644 --- a/libafl_bolts/src/os/windows_exceptions.rs +++ b/libafl_bolts/src/os/windows_exceptions.rs @@ -435,7 +435,7 @@ struct HandlerHolder { handler: UnsafeCell<*mut dyn Handler>, } -pub const EXCEPTION_HANDLERS_SIZE: usize = 64; +pub const EXCEPTION_HANDLERS_SIZE: usize = 96; unsafe impl Send for HandlerHolder {} @@ -445,6 +445,8 @@ static mut EXCEPTION_HANDLERS: [Option; EXCEPTION_HANDLERS_SIZE] None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, + None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, + None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, ]; unsafe fn internal_handle_exception(