数値にプレーンの char 型が使用されています
符号属性を明示的に指定していない算術演算でのプレーンの char
変数
説明
この欠陥は、明示的な符号属性のない char
変数が次のように使用された場合に発生します。
非
char
定数を格納するため。char
が以下の場合の算術演算負の値。
符号変化のオーバーフローの結果。
バッファー オフセットとして
signed
修飾子または unsigned
修飾子のない変数 char
は、コンパイラに応じて符号付きにも符号なしにもできます。
リスク
プレーンの char での演算結果が予期しない数値になる可能性があります。この char をオフセットに使うと、この char がバッファー オーバーフローまたはアンダーフローの原因となる場合があります。
修正方法
処理系定義の混乱を避けるために、char 変数を初期化するときに、その char が符号付きか符号なしかを明示的に指定します。
チェッカーの拡張
入力値が不明であり、入力のサブセットのみがエラーの原因となっている場合、既定の Bug Finder 解析ではこの欠陥が報告されない可能性があります。特定のシステム入力値を原因とする欠陥の有無をチェックするには、より厳密な Bug Finder 解析を実行してください。特定のシステム入力値から欠陥を見つけるための Bug Finder チェッカーの拡張を参照してください。
例
結果情報
グループ: 数値 |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: BAD_PLAIN_CHAR_USE |
影響度: Medium |
バージョン履歴
R2016b で導入