memcmp сравнивает данные, сохраненные в строках после нуль-терминатора
Этот дефект возникает в следующих случаях:
Вы сравниваете две строки байт за байтом с memcmp функция.
Количество сравниваемых байтов таково, что сравниваются бессмысленные данные, сохраненные после нулевого признака конца.
Например:
memcmp(string1, string2, sizeof(string1))
Нуль-терминатор означает конец строки. Сравнение байтов после нулевого терминатора не имеет смысла. Можно сделать ложный вывод о том, что две строки не равны, даже если байты перед терминатором null хранят одно и то же значение.
Использовать strcmp для сравнения строк. Функция сравнивает строки только до нулевого терминатора.
Если вы используете memcmp для двухбайтового сравнения двух строк избегайте сравнения байтов после нулевого терминатора. Определите количество байт для сравнения с помощью strlen функция.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки: MEMCMP_STRINGS |
| Воздействие: среднее |
| ИДЕНТИФИКАТОР CWE: 188 |