スタックスマッシングを検出するには、-fstack-protector-strong
gccにオプションがあるためです。しかし、スタック・バッファ・オーバーフローを常に検出できるわけではありません。最初の関数funcでは、10文字以上の文字列を入力すると、プログラムがクラッシュするとは限りません。私の質問は、スタックバッファオーバーフローを検出する方法があるところです。GCCスタックバッファオーバーフローを検出する方法
void func()
{
char array[10];
gets(array);
}
void func2()
{
char buffer[10];
int n = sprintf(buffer, "%s", "abcdefghpapeas");
printf("aaaa [%d], [%s]\n", n, buffer);
}
int main()
{
func();
func2();
}
なぜC++の質問にタグを付けて、そのようなコードを書いていますか? –
それを避けるのはもっと論理的ではないでしょうか?例えば、 'snprintf(buffer、sizeof(buffer)、"%s "、...)のように使用します。 – mvp
バッファがオーバーフローしたかどうかを検出するのではなく、文字数を増やしてください。 –