Advertencia C6054

Es posible que la cadena 'variable' no esté terminada en cero.

Comentarios

Esta advertencia indica que una función que requiere una cadena terminada en cero se pasó a una cadena no terminada en cero. Una función que espera una cadena terminada en cero podría buscar el cero más allá del final del búfer. Este defecto puede provocar un error de saturación de búfer o un bloqueo que puede afectar a la seguridad. El programa debe asegurarse de que la cadena pasada termina en cero.

Nombre del análisis de código: MISSING_ZERO_TERMINATION2

Ejemplo

El código siguiente genera esta advertencia:

// 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
}

Para corregir esta advertencia, termine en NULL wcArray antes de llamar a la función func(), como se muestra en el código de ejemplo siguiente:

// 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
}

Consulte también