exponenta event banner

Use of memset with size argument zero

Аргумент размера функции в memset семейство равно нулю

Описание

Этот дефект возникает, когда вы вызываете функцию в memset семейство с аргументом size нуля. Функции включают memset, wmemset, bzero, SecureZeroMemory, RtlSecureZeroMemoryи так далее.

Риск

void *memset (void *ptr, int value, size_t num) заполняет первый num байты блока памяти, который ptr точки с заданным value. Нулевое значение num отображает вызов в memset избыточный. Память, которая ptr точки на:

  • Остается неинициализированным, если не инициализирован ранее.

  • Не очищается и может содержать конфиденциальные данные, если они предварительно инициализированы.

Зафиксировать

Определите, происходит ли аргумент нулевого размера из-за предыдущей ошибки в коде. Исправьте ошибку.

Примеры

расширить все

#include <stdio.h>
#include <string.h>

void func (unsigned int size)
{
    char str[] = "Buffer to be filled.";
    memset (str,'-',size);
    puts (str);
}

void calling_func(void) {
    unsigned int buf_size=0;
    func(buf_size);
}

В этом примере аргумент size от memset равен нулю.

Информация о результатах

Группа: Программирование
Язык: C | C++
По умолчанию: Off
Синтаксис командной строки: MEMSET_INVALID_SIZE
Влияние: Средний
ИДЕНТИФИКАТОР CWE: 665
Введенный в R2015b