memcmp
сравнивает данные, хранимые в строках после пустого терминатора строки
Сравнение памяти строк происходит когда:
Вы сравниваете два байта байтом строк с функцией memcmp
.
Количество сравненных байтов таково, что вы сравниваете бессмысленные данные, хранимые после пустого терминатора строки.
Например:
memcmp(string1, string2, sizeof(string1))
Пустой терминатор строки показывает конец строки. Сравнение байтов после пустого терминатора строки бессмысленно. Вы можете сделать ложный вывод, что две строки не равны, даже если байты перед пустым хранилищем терминатора строки то же значение.
Используйте strcmp
для сравнения строк. Функция сравнивает строки только до пустого терминатора строки.
Если вы используете memcmp
для сравнения байта байтом двух строк, избегаете сравнения байтов после пустого терминатора строки. Определите количество байтов, чтобы выдержать сравнение при помощи функции strlen
.
Группа: Программирование |
Язык: C | C++ |
Значение по умолчанию: на |
Синтаксис командной строки: MEMCMP_STRINGS |
Влияние: носитель |
ID CWE: 188 |
Find defects (-checkers)
| Memory comparison of padding data