Use of memset with size argument zero

Аргумент Size функции в memset семейство является нулем

Описание

Этот дефект происходит, когда вы вызываете функцию в memset семейство с нулем аргумента размера. Функции включают 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
Удар: носитель
ID CWE: 665
Введенный в R2015b