C6054C6054

ADVERTENCIA C6054: el <> de la variable de cadena no puede terminar en cerowarning C6054: string <variable> may not be zero-terminated

ObservacionesRemarks

Esta advertencia indica que una función que requiere una cadena terminada en cero se pasó a una cadena terminada distinta de cero.This warning indicates that a function that requires a zero-terminated string was passed a non-zero terminated string. Una función que espera una cadena terminada en cero podría buscar el cero más allá del final del búfer.A function that expects a zero-terminated string could look for the zero beyond the end of the buffer. Este defecto podría provocar un error o un bloqueo de saturación del búfer explotable.This defect might cause an exploitable buffer overrun error or crash. El programa debe asegurarse de que la cadena pasada termina con un cero.The program should make sure the string passed in ends with a zero.

EjemploExample

El código siguiente genera esta advertencia:The following code generates this 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, finalice wcArray NULL antes de llamar a func() la función como se muestra en el código de ejemplo siguiente:To correct this warning, null-terminate wcArray before calling function func() as shown in the following sample code:

// 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énSee also