C6327
Предупреждение C6327: потенциальное переполнение буфера. SysAllocStringLen копирует <количество> знаков из строки <переменная> без проверки числа копируемых знаков. Возможен сбой кода.
Это предупреждение указывает на возможное переполнение буфера. Функция SysAllocStringLen выделяет память для новой строки и затем копирует указанное количество знаков из заданной строки. Поскольку SysAllocStringLen не проверяет количество копируемых знаков, то, если указанное число знаков превышает количество знаков в строке, может произойти сбой кода. Чтобы избежать переполнения буфера, необходимо передавать функции SysAllocString правильное количество знаков.
Пример
Это предупреждение создается в следующем примере кода:
#include <windows.h>
void f ()
{
BSTR bstr;
bstr = SysAllocStringLen(L"txt", 5); // warning 6327
// code...
SysFreeString(bstr);
}
Для устранения этого предупреждения передайте правильную длину строки, как указано в следующем коде:
#include <windows.h>
void f()
{
BSTR bstr;
wchar_t *greeting=L"Hello, World!";
bstr = SysAllocStringLen(greeting, sizeof(greeting));
// code...
SysFreeString(bstr);
}