Freigeben über


C6327

C6327

Warnung C6327: Potenzieller Pufferüberlauf: SysAllocStringLen kopiert <Anzahl> Zeichen aus der Zeichenfolge <Variable>, ohne die zu kopierende Zeichenanzahl zu validieren. Dies kann einen Codeabsturz zur Folge haben.

Diese Warnung weist auf einen potenziellen Pufferüberlauf hin. SysAllocStringLen ordnet eine Zeichenfolge zu und kopiert dann die festgelegte Anzahl von Zeichen aus der angegebenen Zeichenfolge. Da SysAllocStringLen die Anzahl der zu kopierenden Zeichen nicht überprüft, kann es zu einem Codeabsturz kommen, wenn die festgelegte Anzahl von Zeichen größer ist als die Anzahl der Zeichen in der Zeichenfolge. Zu Vermeidung eines Pufferüberlaufs müssen Sie die richtige Anzahl von Zeichen an die SysAllocString-Funktion übergeben.

Beispiel

Im folgenden Beispielcode wird diese Warnung generiert:

#include <windows.h>

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

Um diese Warnung zu korrigieren, übergeben Sie die richtige Zeichenfolgenlänge, wie im folgenden Code gezeigt:

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

Siehe auch

Referenz

sizeof Operator
The sizeof Operator