汚染された除算演算子
除算演算 (/) のオペランドがセキュリティで保護されないソースに由来
説明
この欠陥は、除算演算内の整数オペランドの一方または両方がセキュリティで保護されていないソースから取得された場合に発生します。
リスク
分子 (被除数) が可能な限りの最小値であり、分母 (除数) が
-1である場合、除算演算は結果が現在の変数のサイズでは表現できないためオーバーフローします。分母がゼロである場合、除算演算は失敗し、プログラムがクラッシュがする可能性があります。
こうしたリスクは、恣意的なコードの実行に利用される可能性があります。このようなコードは通例において、プログラムの暗黙的なセキュリティ ポリシーの範囲外です。
修正方法
除算を実行する前に、オペランドの値を検証します。0 または -1 の分母や、最小の整数値の分子についてチェックします。
チェッカーの拡張
既定では、Polyspace® は外部ソースからのデータは汚染されていると仮定します。Polyspace 解析での汚染のソースを参照してください。Polyspace 解析の現在のスコープ以外から発生したすべてのデータを汚染されたものと見なすには、コマンド ライン オプション [-consider-analysis-perimeter-as-trust-boundary] を使用します。
例
結果情報
| グループ: 汚染されたデータ |
| 言語: C | C++ |
| 既定値: オフ |
コマンド ライン構文: TAINTED_INT_DIVISION |
| 影響度: Low |
バージョン履歴
R2015b で導入