C6054C6054

Advertencia C6054: cadena <variable > puede no ser terminadas en cerowarning C6054: string <variable> may not be zero-terminated

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

EjemploExample

El código siguiente genera esta advertencia:The following code generates this warning:


#include <sal.h>

void func( _In_z_ wchar_t* wszStr );

void g ( )
{
    wchar_t wcArray[200];
    func(wcArray); // Warning C6054
}

Para corregir esta advertencia, termine en null wcArray antes una llamada a función func() 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:


#include <sal.h>

void func( _In_z_ wchar_t* wszStr );

void g( )
{
    wchar_t wcArray[200];
    wcArray[0]= '\0';
    func(wcArray);
}

Vea tambiénSee Also

C6053 utilizar anotaciones SAL para reducir defectos de códigoC6053 Using SAL Annotations to reduce code defects