errno がリセットされていません
errno を設定する関数を呼び出す前に errno をリセットしていない
説明
この欠陥は、エラー状態を示すように errno を設定する関数を呼び出す前に errno をリセットしなかった場合に発生します。ただし、関数呼び出し後には、errno でエラー状態をチェックしています。
リスク
errno を設定する関数は、errno を、エラー状態を示す非ゼロの値に設定します。
errno を設定する関数を呼び出す前に errno をゼロに設定していなかった場合、errno を設定する関数を以前に呼び出したときに設定された非ゼロの値が、errno に残っている可能性があります。この場合、errno を使用してエラーを確認すると、最新の呼び出しで発生したエラーであると誤って判断する可能性があります。
errno はプログラム起動時に 0 に設定されますが、エラーの発生後に自動的にリセットされることはありません。必要に応じて、errno を明示的に 0 に設定しなければなりません。
修正方法
エラー状態を示すために errno を設定する関数を呼び出す前に、errno を明示的にゼロにリセットします。
例
結果情報
| グループ: プログラミング |
| 言語: C | C++ |
| 既定値: 手書きコードはオン、生成コードはオフ |
コマンド ライン構文: MISSING_ERRNO_RESET |
| 影響度: High |