我读到了C中字符串的漏洞,然后我发现了这段代码。有人能给我一个解释为什么这是脆弱的吗?提前谢谢。
char buf[MAXSIZE];
if (strlen(str) > MAXSIZE)
return;
strcpy(buf, str);
此代码错误地检查了最大长度。C字符串在字符串的末尾有一个nul来标记字符串的末尾。strcpy((将复制它。为了适应这个nul,测试必须是:
if (strlen(str) >= MAXSIZE)
下面的代码也不正确。int i[10];int j=0;
while (j < 10000){
i[j] = 5;
++j;
}
这段代码将在数组i的10个整数之后覆盖内存中的数据。这将创建一个未定义的行为,可能是崩溃,但可能更微妙。。。