要注意の関数の戻り値がチェックされていません
予期しない戻り値およびエラーのチェックなしで呼び出される要注意の関数
説明
この欠陥は、エラー発生の可能性に関する情報を返す要注意の標準関数を呼び出し、以下のいずれかを行った場合に発生します。
戻り値を無視。
戻り値を変数に単純に代入することも、戻り値を明示的に
void
にキャストすることもしていない。エラーの戻り値をテストすることなく関数の出力 (戻り値または引数の参照渡し) を使用。
以下のような理由で関数呼び出しで障害を発生する可能性が高い場合、チェッカーはその関数を要注意と見なします。
システム リソースが使い尽くされた状態 (リソースを割り当てるときなど)。
権限またはアクセス許可が変更された状態。
外部ソースからのデータを読み取り、書き込みまたは変換する際にソースが汚染された状態。
既存の API があってもサポートされない機能。
チェッカーは、関数がエラーなしで終了したかどうかを "戻り値" が示す関数のみを考慮します。
このような関数の一部では、以下のような重要なタスクを実行する可能性があります。
権限の設定 (
setuid
など)jail の作成 (
chroot
など)プロセスの作成 (
fork
など)スレッドの作成 (
pthread_create
など)ミューテックスのロックまたはロック解除 (
pthread_mutex_lock
など)メモリ セグメントのロックまたはロック解除 (
mlock
など)
リスク
要注意のタスクを実行する関数の戻り値をチェックせず、戻り値を通してエラー情報を示さない場合は、プログラムが予期せぬ動作をする可能性があります。これらの関数のエラーはプログラム全体に伝播し、不適切な出力、セキュリティの脆弱性およびシステム障害の原因となる可能性があります。
修正方法
プログラムを続行する前に、"重要で要注意" の関数の戻り値をテストします。
要注意の関数ではない場合は、その関数を void
にキャストすることによって戻り値を明示的に無視することができます。Polyspace® は、要注意の関数が void にキャストされている場合はこの欠陥を発生させません。"重要で要注意の関数" の場合、さらに脆弱なタスクが実行されるため、この解決策は許容されません。
例
結果情報
グループ: セキュリティ |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: RETURN_NOT_CHECKED |
影響度: High |