私はインターネット上でいくつかの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");
}
このコードを実行しようとしましたが、ランタイムエラーが発生します。コンパイラが2つの変数を作成し、Cookie値が等しいという1つの条件をチェックしているだけなので、なぜランタイムエラーがスローされるのかわかりません。
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
前もって感謝します