Использование memset с нулем аргумента размера

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

Описание

Использование 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