Просмотр исходного кода

bypass vptr santizier (#4231)

LLVM, by default, disables the use of C++'s built-in Run-Time Type Information.
This decision is primarily driven by concerns about code size and efficiency.

But '-fsanitize=vptr' not allowed with '-fno-rtti'.
liang.he 8 месяцев назад
Родитель
Сommit
1d39b9c834
1 измененных файлов с 4 добавлено и 2 удалено
  1. 4 2
      tests/fuzz/wasm-mutator-fuzz/CMakeLists.txt

+ 4 - 2
tests/fuzz/wasm-mutator-fuzz/CMakeLists.txt

@@ -90,8 +90,10 @@ add_compile_options(-Wno-unused-command-line-argument)
 
 
 # Enable fuzzer
 # Enable fuzzer
 add_definitions(-DWASM_ENABLE_FUZZ_TEST=1)
 add_definitions(-DWASM_ENABLE_FUZZ_TEST=1)
-add_compile_options(-fsanitize=fuzzer)
-add_link_options(-fsanitize=fuzzer)
+# '-fsanitize=vptr' not allowed with '-fno-rtti
+# But, LLVM by default, disables the use of `rtti` in the compiler
+add_compile_options(-fsanitize=fuzzer -fno-sanitize=vptr)
+add_link_options(-fsanitize=fuzzer -fno-sanitize=vptr)
 
 
 # Enable sanitizers if not in oss-fuzz environment
 # Enable sanitizers if not in oss-fuzz environment
 set(CFLAGS_ENV $ENV{CFLAGS})
 set(CFLAGS_ENV $ENV{CFLAGS})