問題タブ [buffer-overrun]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - バッファ オーバーラン スロー リターン アドレス
メソッド A をスローすると、バッファ オーバーランが発生しますが、戻ると正常に動作します。throw は実行を呼び出し元メソッドに移動するので、それが行くアドレスは戻りアドレスと同じでなければならないと思っていましたが、明らかに間違っています。Visual Studio デバッガーでスローされるアドレスを確認する方法はありますか?
ありがとうございました
Berkus: これは、上位の呼び出し元メソッドのスタックが壊れているということですか? たとえば、
次に、メソッド C のリターン アドレスは問題ないのに、メソッド B のリターン アドレスが破損し、バッファ オーバーランが発生する可能性はありますか? 私が見ているのは、スローがない場合、私のアプリケーションは正常に実行されるため、メソッド A、B、および C はすべて有効なリターン アドレスを持っていると思います。
memory-management - バッファの外部からの読み取りもバッファオーバーランとしてカウントされますか?
私の懸念は、バッファオーバーランの定義です。バッファ外への書き込みにのみ適用されるようです。
しかし最近、プログラムが合法的に割り当てられたメモリブロックの外部から読み取ろうとして、未定義の動作に遭遇したときに、見事なバグを発見しました。アクセス違反でクラッシュしたか、ネットワークを介して無関係のデータを送信しました。明らかに、バッファの外部からの読み取りも適切ではありません。
バッファの外部からの読み取りは、バッファオーバーランとしてカウントされますか?そうでない場合-どのように呼び出すことができますか?
c++ - あるプラットフォームでバッファ オーバーランが発生し、別のプラットフォームでは発生しないのはどうしてですか?
状況が曖昧なため、この質問をするのをためらっていますが、これがどのように可能であるかを理解したいと思います. Visual Studio 2008 を使用して開発した C++ アプリケーションがあります。Windows 7 64 ビット (または Vista 32 ビット) でアプリケーションをコンパイルすると、アプリケーションは正常に動作します。32 ビット Windows XP SP3 でアプリケーションをコンパイルすると、バッファ オーバーランの警告が表示され、プロセスが終了します。これは、Visual Studio 2008 C++ コンパイラと同じバージョンを使用しています。XP ではバッファ オーバーランが発生するのに、他の Windows プラットフォームでは発生しないのはなぜですか?
c - 3 x 7 のプログラミング
私は 3x7 トリックをプログラムしようとしています。完全なコードはhttps://codereview.stackexchange.com/questions/9419/programming-of-3-x-7-trickで入手できます。
ステップ5で行き詰まりました。
行の値を入力すると、このエラーが発生します。
エラーが何であるかわかりません。いくつかのガイダンスが必要です。
ステップ 6:
php - PHPバッファオーバーラン
PHPのバッファオーバーランについて注意すべき既知のポイントはありますか?現在、フォームから電子メールアドレスを取得し、それを実行してpreg_match
単一のアドレスのみであることを確認し、それを使用してmail
関数を呼び出し、を使用してデータベースにフォームデータの別のロードを保存しますPDOStatement::bindValue()
。
気になることはありますか?
c++ - C/C++ の関数に対する小さすぎる配列サイズに関する警告
プロトタイプが指定するよりも小さい配列として引数が定義されている場合に警告できるツール (できれば Linux) はありますか?
例えば:
これは無効なコードではないことは認識していますが、警告を発することができれば、いくつかのよくある間違いを解決できる可能性があります (最近これらのバグの 1 つに遭遇しました)。
関数が同じファイルにあり、配列の境界外に値を設定すると、いくつかのツール (clang static checker など) が警告しますが、arg がプロトタイプ単独よりも小さい場合に何かが警告するかどうか疑問に思っていました。
私はcppcheck、clang、smatch、splint、gccの-Wextraを使用しました...しかし、これについて文句を言う人はいません。
windows - STATUS_STACK_BUFFER_OVERRUN と STATUS_STACK_OVERFLOW の違いは何ですか?
STATUS_STACK_BUFFER_OVERRUN と STATUS_STACK_OVERFLOW があることがわかりました。それらの2つの違いは何ですか?スタック オーバーフロー (スタックの枯渇) がスタック バッファ オーバーフローと同じではないことがわかりましたが、説明がないか、理解できません。あなたは私を助けることができます?
よろしくトバイアス
c++ - スタック クッキー インストルメンテーション コードがスタックベースのバッファ オーバーランを検出 - 修正済み
そのため、画像をピクセル化するために使用されるこのプログラムにはいくつかの問題があります。1 つの問題は、「変数 'pixArray' の周りのスタックが壊れています」というメッセージが表示され、ブレーク後に [続行] をクリックすると、タイトルにエラーが表示されることです。
Pastebin を使用してもよいかどうかはわかりませんが、「短い」投稿のために使用します。
また、通り抜けると、すべてのピクセル化された正方形が、正方形の左側と上部で 1 ピクセル短すぎます。outFile への書き込み時に元のデータを使用しているだけです。なぜこれが起こっているのかを理解しようとすることができれば、ボーナスポイントが得られます.
最後に、プログラムを実行した後、画像の一番右側の四角形でわかるように、平均が正しく平均化されていないようです。
これらの問題のいずれかの助けをいただければ幸いです。前もって感謝します!
編集:コードを並べ替え、使用するセクションをpixArray
コメントアウトし、コメントアウトすると問題を修正するセクションは関数の下部にあり、getAveragesForRGB
編集 2:すべてがスムーズに実行されるようになりました。何らかの理由で誰かがこの正確な問題に遭遇した場合に備えて、ここgetAveragesForRGB
にすべての問題があった新しい場所があります.
c# - .Net での stackalloc のバッファ オーバーフロー保護
stackalloc の C# リファレンスから:
stackalloc を使用すると、共通言語ランタイム (CLR) のバッファー オーバーラン検出機能が自動的に有効になります。バッファ オーバーランが検出された場合、悪意のあるコードが実行される可能性を最小限に抑えるために、プロセスはできるだけ早く終了します。
具体的には、.NET にはどのような保護メカニズムが実装されていますか?
また、バッファ アンダーランも検出しますか? どの既知の攻撃に対する保護が弱いですか?
コンテキストについては、たとえば MS C++ コンパイラの場合、情報は次の場所で入手できます:
Windows ISV ソフトウェア セキュリティ防御:
スタック バッファ オーバーラン検出機能は、Visual Studio .NET 2002 で C/C++ コンパイラに導入され、その後のバージョンで更新されました。/GS は、関数のスタックに配置される乱数を生成およびチェックするために、スタートアップ コード、関数のエピローグおよびプロローグ コードを追加するようにコンパイラに指示するコンパイラ スイッチです。
Visual C++ 2005 (およびそれ以降) も、スタック上のデータを並べ替えて、そのデータが予測どおりに破損しにくくすることに注意してください。例 を以下に示します。
• バッファを非バッファよりも上位のメモリに移動する。この手順は、スタック上に存在する関数ポインターを保護するのに役立ちます。
• さまざまなバッファ オーバーラン攻撃を軽減するために、実行時にポインタとバッファ引数を下位メモリに移動します。
c++-cli - Marshal::GetFunctionPointerForDelegate を使用し、アンマネージ コードからコールバックを呼び出すと、アプリケーションの終了時にバッファー オーバーランが発生する
Visual Studio 2008 と .NET Framework 3.5 を使用して、C++/CLI/.NET フォーム アプリケーションを作成しています。ゲームのエディター。エディター以外のすべてのゲーム コードは純粋な C++ です。アンマネージ コードから呼び出される Forms コードのコールバックが必要なところまで来ています。
GetFunctionPointerForDelegate を使用しています。
まず、 Form クラスに次のものがあります。
次に、フォーム コンストラクターでコールバックを設定します。
そのため、ポインターを保存し、アンマネージ コードで、別のスレッドからアプリの初期化の早い段階でコールバックを呼び出します。
アプリケーションを閉じるまで、すべてがアプリで機能的に完全に機能します。呼び出し元のスレッドで常にバッファ オーバーラン エラーが発生し、コール スタックが役に立たなくなります。
ここでのキッカーは、コールバックが文字通り何もしない場合でもクラッシュすることです。クラッシュを引き起こすために必要なのは、コールバックを呼び出すコードの最後の行を有効にすることだけです。その行を無効にすると、問題はありません。クラッシュは、コールバックを実際に使用するときではなく、終了するときにのみ発生することに注意してください。
試してみるべき推奨事項はありますか?