禁止された関数の使用
禁止された関数のブロックリストに追加されている関数の使用
説明
この欠陥は、禁止された関数のブロックリストに追加されている関数を使用した場合に発生します。ブロックリストを作成するには、次のようにします。
特定の構文で XML ファイル内の関数を列挙します。
テンプレート ファイル
code-behavior-specifications-template.xml
をフォルダー
から書き込み可能な場所にコピーし、そのファイルを変更します。以下の構文を使用して、ファイル内の各関数を既存の同様のエントリの後ろに入力します。polyspaceroot
\polyspace\verifier\cxxここで、<function name="funcname"> <behavior name="FORBIDDEN_FUNC"/> </function>
は、ブロックリストに追加する関数の名前です。funcname
この XML ファイルをオプション
-code-behavior-specifications
の引数として指定します。Bug Finder チェッカーを使用した非推奨の関数または安全でない関数、キーワード、またはマクロのフラグ設定を参照してください。
リスク
関数は、以下のいずれかの理由でブロックリストに追加されます。
その関数により動作が未定義のさまざまな状況が発生し、セキュリティの脆弱性につながる可能性があり、より安全な別の関数が存在している。
[危険な標準関数を使用しています]
や[旧式の標準関数が使用されています]
などの既存のチェッカーによって明示的にチェックされない関数を禁止できます。関数が、C++98 から C++11 へなどの移行の一環として非推奨になっている。
移行の一環として、置き換える必要がある関数のリストを作成し、このチェッカーを使用してそれらの使い方を特定できます。
修正方法
ブロックリストに登録されている関数を、許可リストに登録されている関数に置き換えます。
このチェッカーをグループ、プロジェクト、または組織に公開する場合は、ブロックリストに登録されてる関数とその代替関数のリストを作成し、結果のレビュー担当者がそのリストを参照して適切な置き換えができるようにします。
チェッカーの拡張
この欠陥チェッカーには、関数のブロックリストを指定する必要があります。オプション [欠陥の検出] (-checkers)
を使用してチェッカーを指定しても、ブロックリストも指定しなければ、チェッカーは有効になりません。Bug Finder チェッカーを使用した非推奨の関数または安全でない関数、キーワード、またはマクロのフラグ設定を参照してください。
例
結果情報
グループ: 適切な手法 |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: FORBIDDEN_FUNC |
影響度: Low |
バージョン履歴
R2020a で導入