exponenta event banner

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

Аргумент размера функции в 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++
По умолчанию: Откл.
Синтаксис командной строки: MEMSET_INVALID_SIZE
Воздействие: среднее
ИДЕНТИФИКАТОР CWE: 665
Представлен в R2015b