errno неверно проверено на наличие ошибки условий
Этот дефект возникает при проверке errno для условий ошибки в ситуациях, когда проверка errno не гарантирует отсутствие ошибок. В некоторых случаях проверка errno может привести к ложным срабатываниям.
Например, вы проверяете errno следующие вызовы функций:
fopen: Если вы следуете ISO® Стандартная, функция может не устанавливаться errno об ошибках.
atof: Если вы следуете стандарту ISO, функция не устанавливается errno.
signal: The errno значение указывает на ошибку, только если функция возвращает SIG_ERR индикатор ошибки.
Стандарт ISO C не обеспечивает, чтобы эти функции errno об ошибках. Устанавливаются ли функции errno или нет зависит от реализации.
Чтобы обнаружить ошибки, если вы проверяете errno только валидность этой проверки также становится зависимой от реализации.
В некоторых случаях errno значение указывает на ошибку, только если функция возвращает определенный индикатор ошибки. Если вы проверяете errno перед проверкой возвращаемого значения функции можно увидеть ложные срабатывания.
Для получения информации о том, как обнаружить ошибки, смотрите документацию для этой конкретной функции.
Как правило, функции возвращают внеполосный индикатор ошибки, чтобы указать на ошибки. Для образца:
fopen возвращает указатель null, если произошла ошибка.
signal возвращает SIG_ERR индикатор ошибки и устанавливает errno к положительному значению. Проверяйте errno только после проверки возвращаемого значения функции.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: On для рукописного кода, off для сгенерированного кода |
Синтаксис командной строки: ERRNO_MISUSE |
| Влияние: Высокий |
| ИДЕНТИФИКАТОР CWE: 703 |
Errno not checked | Errno not reset | Find defects (-checkers) | Returned value of a sensitive function not checked | Unsafe conversion from string to numerical value