我正在阅读C中字符串中的漏洞,然后我发现了这段代码。谁能给我一个解释为什么这是易受攻击的?提前谢谢。
发布于 2021-05-15 17:11:05
char buf[MAXSIZE];
if (strlen(str) > MAXSIZE)
return;
strcpy(buf, str); 此代码错误地检查最大长度。C字符串在字符串的末尾有一个nul来标记字符串的末尾。strcpy()将复制它。为了适应这个nul,测试必须是:
if (strlen(str) >= MAXSIZE)下面的代码也不正确。int i10;int j= 0;
while (j < 10000){
i[j] = 5;
++j;
}这段代码将在数组i的10个整数之后覆盖内存中的数据。这将产生一种未定义的行为,可能会崩溃,但也可能是更微妙的事情……
https://stackoverflow.com/questions/67544733
复制相似问题