【发布时间】:2010-11-26 03:11:41
【问题描述】:
{
char buf[8];
sprintf(buf,"AAAA%3s","XXXXXXXX");
printf("%s\n",buf);
}
会发生什么?
缓冲区有 8 个字符的空间,只剩下 3 个空闲字符,但是,“XXXXXXXX”是 8 个字符。
我在 Windows 7 上使用 Visual Studio 2008 进行了测试。结果,程序打印了 AAAXXXXXXX,并发生了运行时错误。
【问题讨论】:
标签: c printf overflow fortify-source