Condividi tramite


C6327

Aggiornamento: novembre 2007

C6327

avviso C6327: potenziale sovraccarico del buffer: SysAllocStringLen copia <numero> caratteri dalla stringa <variabile> senza convalidare il numero di caratteri da copiare. Il codice potrebbe causare un arresto anomalo

L'avviso indica un potenziale sovraccarico del buffer. SysAllocStringLen alloca una stringa, quindi copia il numero di caratteri specificato dalla stringa specificata. Dal momento che SysAllocStringLen non convalida il numero di caratteri da copiare, se il numero specificato è superiore al numero di caratteri nella stringa il codice potrebbe causare un arresto anomalo. Per evitare il sovraccarico del buffer, è necessario passare alla funzione SysAllocString il numero di caratteri corretto.

Esempio

Il seguente codice di esempio genera questo avviso:

#include <windows.h>

void f ()
{
  BSTR bstr;
  bstr = SysAllocStringLen(L"txt", 5); // warning 6327
  // code...
  SysFreeString(bstr);
}

Per risolvere il problema, passare la lunghezza della stringa corretta, come illustrato nel codice seguente:

#include <windows.h>
void f()
{
  BSTR bstr;
  wchar_t *greeting=L"Hello, World!";
  
  bstr = SysAllocStringLen(greeting, sizeof(greeting));
  // code...
  SysFreeString(bstr);
} 

Vedere anche

Riferimenti

sizeof Operator

The sizeof Operator