NULL ポインターを使用した算術演算
NULL
ポインターに対し実行された算術演算
説明
この欠陥は、値が NULL
であるポインターが算術演算で使用された場合に発生します。
リスク
NULL ポインターに対するポインター演算および結果として得られるポインターのデリファレンスの実行は未定義の動作です。ほとんどの実装では、このデリファレンスによってプログラムがクラッシュする可能性があります。
修正方法
ポインターでの算術演算の前にポインターが NULL
かどうかをチェックします。
以前に NULL
かどうかをチェックしていたにもかかわらず、この問題が発生する場合は、このチェックと以降のデリファレンスの間で中間イベントを探します。多くの場合、結果の詳細 (または Polyspace as You Code のソース コード ツールヒント) には欠陥につながる一連のイベントが表示されます。そのシーケンス内のどのイベントについても修正を実装できます。結果の詳細にイベント履歴が表示されない場合は、ソース コード内で右クリック オプションを使用して、欠陥に関連する変数のこれまでの参照を検索し、関連するイベントを検出できます。Polyspace デスクトップ ユーザー インターフェイスでの Bug Finder の結果の解釈またはPolyspace Access Web インターフェイスでの Bug Finder の結果の解釈 (Polyspace Access)も参照してください。
以下の修正例を参照してください。
例
結果情報
グループ: 静的メモリ |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: NULL_PTR_ARITH |
影響度: Low |