【发布时间】:2012-10-27 16:11:06
【问题描述】:
我有以下代码:
char buffer[10];
void main(int argc, char *argv[]) {
strcpy(buffer, argv[1]);
printf("value of buffer %s\n",buffer);
}
我知道将缓冲区变量放在主函数中可能会使堆栈溢出,但是通过将其声明为全局变量,无论我从命令行输入多少 ascii 字符,都不会发生任何事情。我期待一个分段错误,但它似乎打印了我输入的所有字符。怎么会?
我还有一个与该主题相关的问题,如果程序存在缓冲区溢出漏洞,例如堆栈溢出,我是否可以在易受攻击的变量中输入任意大小的代码,或者如果代码超出为用户程序分配的内存边界,SO 是否会抛出分段默认异常?
【问题讨论】:
-
你是用
-Wall编译的吗? -
这有什么帮助? @shiplu.mokadd.im
-
好的,OP 缺少
printf()和strcpy()的原型,是的。 -
@alk 我的错误。我虽然它会显示一些警告!但不是。它没有。
标签: c