バッファ、スタック、ヒープオーバーフローについて読んでいました。私はこれもpostと読んでいます。私の質問は、私のコードでグローバル変数だけを使用すると、オーバーフローの悪用をすべて防ぐことはできますか?グローバル変数を使用したプログラムの作成はより安全ですか?
のは、私はこれがグローバルスコープで宣言されたコードにバッファとしましょう:
char buf1[10];
char buf2[100];
私はrecv(int s, char *buf, int len,int flags);
- にバッファとして
buf1
を送信する場合、私はデータセグメントを上書きすると台無しにしますbuf2
コンテンツですか? - 私はそれがコードセグメントではなく、データセグメントが実行可能ではないことを知っているので、コードを実行できますか?
Globalsを使用するのが最も安全な方法であると結論できますか?
最も安全な方法は、バッファをオーバーランさせることではありません。 –
IMO、これはあなたが年を取ったときに癌で死ぬことを防ぐために25歳のときに自殺することとほぼ同じです。 –
'len'に適切な値を渡す限り、あなたのバッファはまったくオーバーフローしません。 *これは難しい概念ではありません。 –