• ベストアンサー
※ 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を使用している開発環境での対処方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2

ごめん、下記回答的外れだったかも。 異常系でreturn 0で戻ってくるときがある、というのは、 いわゆるバッファオーバーラン攻撃な状態になってて、 プログラム側では検出できないのではないのかな。 Stack around…は、VC++のセキュリティチェック機能で検出されてる例外だと思うので、 http://msdn.microsoft.com/ja-jp/library/cc465512.aspx の13.1.1を参照して、独自のセキュリティエラーハンドラを定義して return 1を返すように実装できると思います。 ただ、繰り返しになりますが、このチェックをすり抜けるケースには、どうやっても対処できないのではないのではないかと。

mikami532
質問者

お礼

返信が遅れましてすみません。 >バッファオーバーラン攻撃な状態 まさしくそんな状態です。 リンク先参考にさせていただきます。 それでも全てキャッチできるわけではないのですね。。。 そこも含めて検討いたします。 回答ありがとうございました。

その他の回答 (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

関連するQ&A