- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Stack around the variable 'xx' was corrupted)
Stack around the variable 'xx' was corrupted
このQ&Aのポイント
- 異常系の文字列処理で発生するエラーメッセージ「Stack around the variable 'xx' was corrupted」について質問します。
- ビルド後の実行結果で問題が発生する場合もあり、try-catch文では例外をキャッチすることができないため、正常終了しているように見えることがあります。
- Visual C++ 2008 Expressを使用している開発環境での対処方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ごめん、下記回答的外れだったかも。 異常系でreturn 0で戻ってくるときがある、というのは、 いわゆるバッファオーバーラン攻撃な状態になってて、 プログラム側では検出できないのではないのかな。 Stack around…は、VC++のセキュリティチェック機能で検出されてる例外だと思うので、 http://msdn.microsoft.com/ja-jp/library/cc465512.aspx の13.1.1を参照して、独自のセキュリティエラーハンドラを定義して return 1を返すように実装できると思います。 ただ、繰り返しになりますが、このチェックをすり抜けるケースには、どうやっても対処できないのではないのではないかと。
その他の回答 (2)
- hidebun
- ベストアンサー率50% (92/181)
回答No.3
どうも、_set_security_error_handlerってのは、VC++2005からは削除されたみたいですね。 http://www.codeproject.com/KB/tips/seccheck.aspx?display=Print のサンプルと、 構造化例外 http://www.ne.jp/asahi/hishidama/home/tech/vcpp/seh.html を参考にすれば、やりたいことの一部は実現できそうです。 でも、やはり、 > Stack around が出ないように組む!が正しい でしょうね。
- hidebun
- ベストアンサー率50% (92/181)
回答No.1
お礼
返信が遅れましてすみません。 >バッファオーバーラン攻撃な状態 まさしくそんな状態です。 リンク先参考にさせていただきます。 それでも全てキャッチできるわけではないのですね。。。 そこも含めて検討いたします。 回答ありがとうございました。