我在网上找到了一些 C 代码:
int main() {
int cookie;
char buf[80];
printf("buf: %08x cookie: %08x\n", &buf, &cookie);
gets(buf);
if (cookie == 0x41424344)
printf("you win!\n");
}
我试图运行这段代码,但它给出了运行时错误。我不确定为什么编译器会抛出任何运行时错误,因为它只是创建两个变量并检查 cookie 值相等的一个条件。
根据一些说明 cookie 变量未初始化的答案,这就是我收到此错误的原因,因此我将代码修改为:
int main() {
int cookie;
char buf[80];
printf("buf: %08x cookie: %08x\n", &buf, &cookie);
gets(buf);
if (cookie == 1)
printf("you win!\n");
}
猜猜这一次它不会给我任何运行时错误。
来源:http: //community.coresecurity.com/~gera/InsecureProgramming/stack1.html
提前致谢