Condividi tramite


Avviso C6054

La stringa 'variable' potrebbe non essere con terminazione zero.

Osservazioni:

Questo avviso indica che una funzione che richiede una stringa con terminazione zero è stata passata una stringa senza terminazione zero. Una funzione che prevede una stringa con terminazione zero potrebbe cercare lo zero oltre la fine del buffer. Questo difetto può causare un errore di sovraccarico del buffer sfruttabile o un arresto anomalo. Il programma deve assicurarsi che la stringa passata termini con zero.

Nome dell'analisi del codice: MISSING_ZERO_TERMINATION2

Esempio

Il codice seguente genera questo avviso:

// Warning C6054_bad.cpp
// Compile using: cl /W4 /EHsc /c /analyze C6054_bad.cpp
#include <sal.h>

void func( _In_z_ wchar_t* wszStr );

void g ( )
{
    wchar_t wcArray[200] = { 'h', 'e', 'l', 'l', 'o' };
    func(wcArray); // Warning C6054
}

Per correggere questo avviso, null-terminate wcArray prima di chiamare la funzione func() , come illustrato nel codice di esempio seguente:

// C6054_good.cpp
// Compile using: cl /W4 /EHsc /c /analyze C6054_good.cpp
#include <sal.h>

void func( _In_z_ wchar_t* wszStr );

void g ( )
{
    wchar_t wcArray[200] = { 'h', 'e', 'l', 'l', 'o', '\0' };
    func(wcArray); // OK
}

Vedi anche