Compartilhar via


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);
} 

Consulte também

Referência

sizeof Operator

The sizeof Operator