Avertissement C6054
La chaîne 'variable' peut ne pas être terminée par zéro.
Notes
Cet avertissement indique qu’une fonction qui nécessite une chaîne terminée par zéro a été passée à une chaîne non terminée par zéro. Une fonction qui s’attend à ce qu’une chaîne terminée par zéro puisse rechercher le zéro au-delà de la fin de la mémoire tampon. Ce défaut peut entraîner une erreur de dépassement de mémoire tampon exploitable ou un blocage. Le programme doit s’assurer que la chaîne passée se termine par un zéro.
Nom de l’analyse du code : MISSING_ZERO_TERMINATION2
Exemple
Le code suivant génère cet avertissement :
// 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
}
Pour corriger cet avertissement, arrêt wcArray
null avant d’appeler la fonction func()
, comme indiqué dans l’exemple de code suivant :
// 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
}