【发布时间】:2015-07-02 18:40:18
【问题描述】:
#include <stdio.h>
main()
{
char buf[8];
sprintf(buf,"AAAA%3s","XXssssssssXXXsssssXXX");
printf("%s\n",buf);
}
我希望 valgrind 使用上述代码检测缓冲区溢出。但它不报告任何错误或警告。我需要为此启用任何特殊标志吗?
【问题讨论】:
-
使用最近的
gcc或clang编译器,您可以使用-Wall -g -fsanitize=address进行编译,它可能会在运行时给出一条消息。 BTWsprintf本质上是不安全的,不应使用。使用snprintf或asprintf -
查看我们的 CheckPointer 工具;它会发现许多 valgrind 无法找到的内存错误。 semdesigns.com/Products/MemorySafety
标签: c valgrind buffer-overflow