問題タブ [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 - Confused by gdb print ptr vs print "%s"
Why is ptr printing the string correctly but cwd not; this also affects the program and it crashes if I try to use the cwd...
[edit: turns out that crash was caused by a stupid buffer overflow on this var... grr...not gdb, but the print question was still valid]
c - 異なる UNIX ライクなオペレーティング システムでの snprintf の一貫性のない動作をどのように克服できますか?
man ページによると、snprintf は glibc バージョン 2.2 以降で書き込まれたバイト数を返しています。ただし、libc2.2 および HP-UX の下位バージョンでは、正の整数が返されるため、バッファ オーバーフローが発生する可能性があります。
どうすればこれを克服し、移植可能なコードを書けるでしょうか?
編集:より明確にするために
このコードはlib 2.3で完全に機能しています
Linux では文字列の長さ (10) を返します。しかし、同じコードが、HP-UX マシンで出力される文字数よりも大きい正の数を返しています。この説明でいいと思います。
c# - 完全に管理されたasp.net C#Webアプリケーションでバッファオーバーフロー/オーバーランが可能ですか
完全に管理された asp.net Web ポータルにバッファ オーバーフロー/オーバーランの脆弱性がありますか? はいの場合、どのようにテストできますか?
c++ - どのC/C ++関数が最も頻繁に誤って使用され、バッファオーバーフローを引き起こす可能性がありますか?
メモリリークでいっぱいの大規模なC++コードベースを維持するように依頼されました。調べてみると、リークにつながるバッファオーバーフローがたくさんあることがわかりました(どうしてこれが悪くなったのか、知りたくありません)。
危険な機能から始めて、最初にバッファオーバーフローを削除することにしました。最も頻繁に誤って使用され、バッファオーバーフローを引き起こす可能性のあるC / C ++関数はどれですか?
バッファオーバーランの検索に使用されるコンパイラやツールについて、これを扱う別の質問を作成しました
c++ - どのC/C ++ツールがバッファオーバーフローをチェックできますか?
メモリリークでいっぱいの大規模なC++コードベースを維持するように依頼されました。調べてみると、リークにつながるバッファオーバーフローがたくさんあることがわかりました(どうしてこれが悪くなったのか、知りたくありません)。
最初にバッファオーバーフローを削除することにしました。バグハンティングを簡単にするために、バッファオーバーランをチェックするためにどのツールを使用できますか?
destructor - このコード行でバッファ オーバーラン エラーが発生するのはなぜですか?
コードは1行しかありません。これは次のとおりです。
関数内OnBnClickedButtonGo()
。この関数はリリース モードでは失敗しますが、デバッグ モードでは問題なく動作します。
(Windows XP で Visual Studio 8 を使用しています。)
エラーメッセージは次のとおりです。
目に見えず、暗示されているデストラクタだと思います...しかし、私は本当に知りません。
PS: PCRE lib バージョン 7.8 に静的にリンクしています。PS2: あまり関連性はありませんが、PCRE ライブラリへのリンクに問題がある一部の人々を助けるかもしれません (それを整理するのに何時間もかかりました): 行を含めます#define PCRE_STATIC
.
java - Javaにはバッファオーバーフローがありますか?
Javaにはバッファオーバーフローがありますか? はいの場合、シナリオを教えていただけますか?
c++ - マネージ コード環境の外で安全にプログラミングするにはどうすればよいでしょうか。
C または C++ でプログラムを作成し、メモリ管理、型チェック、またはバッファー オーバーラン保護などのマネージ言語の利点がなく、ポインター演算を使用している場合、プログラムが安全であることをどのように確認しますか? 多くの単体テストを使用しますか、それとも用心深いコーダーですか? 他の方法はありますか?
c - get()について不平を言う場合は、scanf( "%s"、...)で同じことをしてみませんか?
差出人man gets
:
get()は絶対に使用しないでください。事前にデータを知らずにgets()が読み取る文字数を知ることは不可能であり、gets()はバッファの終わりを超えて文字を格納し続けるため、使用するのは非常に危険です。これは、コンピュータのセキュリティを破るために使用されてきました。代わりにfgets()を使用してください。
ほとんどすべての場所で、同じ問題(バッファオーバーフロー/バッファオーバーラン)が発生scanf
するはずの方法で使用されていることがわかります。この場合、この問題は存在しますか?マニュアルページにそれについての参照がないのはなぜですか?これをコンパイルするときにgccが警告しないのはなぜですか?scanf("%s",string)
scanf
-Wall
ps:フォーマット文字列で文字列の最大長をscanf
:で指定する方法があることを私は知っています。
編集:私は前のコードが正しいかどうかを判断するように求めていません。私の質問は、もしscanf("%s",string)
常に間違っているのなら、なぜ警告がなく、マニュアルページにそれについて何もないのですか?
c++ - 「バッファ オーバーラン」C6386 警告の回避
私のコードではxyz
、10 個のオブジェクトの配列を使用しています。次のような unsigned int インデックスを使用して配列の要素にアクセスしようとすると、xyz[level]
「バッファ オーバーラン」という警告が表示されます。論理的には、レベルが 10 を超えることはないと確信しています。この警告を回避するにはどうすればよいですか?