MISRA C:2012 Dir 4.7
If a function returns error information, then that error information shall be tested
説明
命令の定義
If a function returns error information, then that error information shall be tested 1 .
根拠
戻り値でエラー情報を示す関数の戻り値をチェックしない場合、プログラムが予期しない動作をする可能性があります。これらの関数のエラーはプログラム全体に伝播し、不適切な出力、セキュリティの脆弱性およびシステム障害の原因となる可能性があります。
Polyspace 実装
チェッカーは、可能性のあるエラーに関する情報を返す要注意の標準関数を呼び出して、以下のいずれかを行った場合に違反を発生させます。
戻り値を無視。
戻り値を変数に単純に代入することも、戻り値を明示的に
voidにキャストすることもしていない。エラーの戻り値をテストすることなく関数の出力 (戻り値または引数の参照渡し) を使用。
以下のような理由で関数呼び出しで障害を発生する可能性が高い場合、チェッカーはその関数を要注意と見なします。
システム リソースが使い尽くされた状態 (リソースを割り当てるときなど)。
権限またはアクセス許可が変更された状態。
外部ソースからのデータを読み取り、書き込みまたは変換する際にソースが汚染された状態。
既存の API があってもサポートされない機能。
チェッカーは、関数がエラーなしで終了したかどうかを "戻り値" が示す関数のみを考慮します。
このような関数の一部では、以下のような重要なタスクを実行する可能性があります。
権限の設定 (
setuidなど)jail の作成 (
chrootなど)プロセスの作成 (
forkなど)スレッドの作成 (
pthread_createなど)ミューテックスのロックまたはロック解除 (
pthread_mutex_lockなど)メモリ セグメントのロックまたはロック解除 (
mlockなど)
重要ではない関数では、チェッカーは関数戻り値を void にキャストすることを許可します。
この命令は部分的にのみサポートされます。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
| グループ: Code design |
| カテゴリ: 必要 |
| AGC カテゴリ: 必要 |
バージョン履歴
R2017a で導入1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.