Valgrind不会检测到缓冲区溢出

时间:2015-04-24 08:46:26

标签: c valgrind buffer-overflow

#include <stdio.h>
main()
{     
    char buf[8];
    sprintf(buf,"AAAA%3s","XXssssssssXXXsssssXXX");
    printf("%s\n",buf);
}

我希望valgrind使用上面的代码检测缓冲区溢出。但它不会报告任何错误或警告。我是否需要为此启用任何特殊标志?

1 个答案:

答案 0 :(得分:14)

来自Valgrind Tutorial

valgrind不是

  

虽然valgrind是一个非常有用的程序,但它不会奇迹般地告诉你程序中的每个内存错误。您应该记住几个限制。它不会对堆栈/静态数组进行边界检查。