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