memset или wmemset используется, возможно, с неверными аргументами
Этот дефект возникает, когда Polyspace ® Bug Finder™ обнаруживает использование memset или wmemset функция с, возможно, неправильными аргументами.
void *memset (void *ptr, int value, size_t num) заполняет первый num байтов блока памяти, ptr указывает на с указанным value. Если аргумент value неверно, блок памяти инициализирован с непреднамеренным значением.
Непреднамеренная инициализация может произойти в следующих случаях.
| Проблема | Риск | Возможное исправление |
|---|---|---|
Второй аргумент: '0' вместо 0 или '\0'. | ASCII-значение символа '0' является 48 (десятичное), 0x30 (шестнадцатеричный), 069 (восьмеричный), но не 0 (или '\0') . | Если требуется инициализировать с помощью '0', используйте одно из значений ASCII. В противном случае используйте 0 или '\0'. |
| Второй и третий аргументы, вероятно, обратны. Например, третий аргумент является литералом, а второй аргумент не является литералом. | Если порядок сторнируется, блок памяти непреднамеренного размера инициализируется с неверными аргументами. | Сторнируйте порядок аргументов. |
| Второй аргумент не может быть представлен в байте. | Если второй аргумент не может быть представлен в виде байта, и ожидается, что каждый байт блока памяти будет заполнен этим аргументом, инициализация не выполняется по назначению. | Примените битовую маску к аргументу, чтобы получить обернутый или усеченный результат, который может быть представлен в байте. При применении битовой маски убедитесь, что она дает ожидаемый результат. Например, заменить |
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Исправление может быть реализовано для любого события в последовательности. Если сведения о результатах не отображают историю событий, можно выполнить обратную трассировку, щелкнув правой кнопкой мыши параметры в исходном коде и просмотреть предыдущие связанные события. См. также раздел Интерпретация результатов поиска ошибок в интерфейсе пользователя Polyspace Desktop.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к результату или коду, чтобы избежать другой проверки. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: MEMSET_INVALID_VALUE |
| Воздействие: Низкий |
| CWE ID: 665, 683 |