errno неправильно проверены на наличие ошибок
Этот дефект возникает при проверке errno для условий ошибок в ситуациях, когда проверка errno не гарантирует отсутствие ошибок. В некоторых случаях проверка errno может привести к ложным срабатываниям.
Например, вы проверяете errno следующие вызовы функций:
fopen: Если следовать стандарту ISO ®, функция может не быть установленаerrno об ошибках.
atof: При соблюдении стандарта ISO функция не устанавливается errno.
signal: errno значение указывает на ошибку, только если функция возвращает SIG_ERR индикатор ошибки.
Стандарт ISO C не обеспечивает установку этих функций errno об ошибках. Установлены ли функции errno зависит или нет от реализации.
Обнаружение ошибок при проверке errno только действительность этой проверки также становится зависимой от реализации.
В некоторых случаях errno значение указывает на ошибку, только если функция возвращает определенный индикатор ошибки. Если проверить errno перед проверкой возвращаемого значения функции можно увидеть ложные положительные результаты.
Для получения информации об обнаружении ошибок см. документацию по данной функции.
Как правило, функции возвращают внеполосный индикатор ошибок для индикации ошибок. Например:
fopen возвращает нулевой указатель при возникновении ошибки.
signal возвращает значение SIG_ERR индикатор ошибок и наборы errno до положительного значения. Проверить errno только после проверки возвращаемого значения функции.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки: 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