C6327
Aviso C6327: Saturação de buffer possíveis: Cópias de SysAllocStringLen <number> caracteres da seqüência <variable> sem validar o número de caracteres a serem copiados. O código pode falhar.
Este aviso indica uma possível saturação de buffer. SysAllocStringLen aloca uma seqüência de caracteres e, em seguida, copia o número especificado de caracteres da seqüência de caracteres especificada. Porque SysAllocStringLen não valida o número de caracteres a serem copiados, se o número de caracteres especificado é maior do que o número de caracteres na seqüência de caracteres, o código poderá falhar. Você deve passar o número correto de caracteres para a função SysAllocString para evitar a saturação de buffer.
Exemplo
O exemplo de código a seguir gera este aviso:
#include <windows.h>
void f ()
{
BSTR bstr;
bstr = SysAllocStringLen(L"txt", 5); // warning 6327
// code...
SysFreeString(bstr);
}
Para corrigir esse aviso, passe o comprimento de seqüência de caracteres correta, conforme mostrado no código a seguir:
#include <windows.h>
void f()
{
BSTR bstr;
wchar_t *greeting=L"Hello, World!";
bstr = SysAllocStringLen(greeting, sizeof(greeting));
// code...
SysFreeString(bstr);
}