小编use*_*546的帖子

AddressSanitizer 抑制

我试图抑制来自 clang/gcc 中地址清理程序的警告

我的源文件如下所示:

int foo(){
  double bar[] = {7,8};
  return bar[3];
}

int main(){
  return foo();
}
Run Code Online (Sandbox Code Playgroud)

显然第 3 行有溢出。

抑制文件 (myasan.supp) 包含:

interceptor_via_fun:foo
Run Code Online (Sandbox Code Playgroud)

编译(clang 也会产生警告)并运行:

clang -O0 -g -fsanitize=address -fno-omit-frame-pointer sanitizerTest.c
ASAN_SYMBOLIZER_PATH=/software/clang/7.0.0/bin/llvm-symbolizer  ASAN_OPTIONS=suppressions=myasan.supp ./a.out
Run Code Online (Sandbox Code Playgroud)

但地址消毒剂仍然抱怨溢出。

==8119==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffeab4e75f8 at pc 0x0000004008bf bp 0x7ffeab4e75b0 sp 0x7ffeab4e75a8
READ of size 8 at 0x7ffeab4e75f8 thread T0
#0 0x4008be in foo() /tmp/asan/sanitizerTest.c:3
#1 0x400919 in main /tmp/asan/sanitizerTest.c:7
#2 0x7f549fbfb82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
#3 0x400718 in _start (/tmp/asan/a.out+0x400718)
Run Code Online (Sandbox Code Playgroud)

编译器是clang7。我也测试了 clang6、gcc7。 …

gcc clang sanitizer address-sanitizer

5
推荐指数
2
解决办法
5212
查看次数

标签 统计

address-sanitizer ×1

clang ×1

gcc ×1

sanitizer ×1