C6053
upozornění C6053: volání <function> nemusí nula ukončení řetězce <variable>
Toto upozornění znamená, že zadané funkce byla volána takovým způsobem, že nemusí být výsledný řetězec zakončený nulou.Tato vada může způsobit zhroucení nebo zneužít přetečení vyrovnávací paměti aplikace.Toto upozornění se generuje také, pokud očekává poznámkami funkce nulový řetězec ukončený je předán řetězec, který není null byla ukončena.
Většina standard c library a Win32 řetězce funkce zpracování vyžadují a vytvářejí řetězců ukončených nula.Několik funkcí "počítá řetězec" (včetně strncpy, wcsncpy, _mbsncpy, _snprintf, a snwprintf) neposkytují řetězců ukončených nula, pokud jsou přesně vyplnit své vyrovnávací paměti.V tomto případě následující volání funkce řetězec, který očekává řetězec zakončený nulou přejde za konec vyrovnávací paměti pro nulu.Program měli ujistit, že řetězec končí na nulu.Obecně by měly předávat délka jednu funkci "počítá řetězec" menší než velikost vyrovnávací paměti a výslovně přiřadíte nula na poslední znak ve vyrovnávací paměti.
Příklad
Následující ukázkový kód generuje toto upozornění:
#include <string.h>
#define MAX 15
size_t f( )
{
char szDest[MAX];
char *szSource="Hello, World!";
strncpy(szDest, szSource, MAX);
return strlen(szDest); // possible crash here
}
Opravit toto varování, nula ukončení řetězce, jak je znázorněno v následujícím ukázkovém kódu:
#include <string.h>
#define MAX 15
size_t f( )
{
char szDest[MAX];
char *szSource="Hello, World!";
strncpy(szDest, szSource, MAX-1);
szDest[MAX-1]=0;
return strlen(szDest);
}
Následující ukázkový kód opraví tato upozornění pomocí řetězce bezpečné manipulace s strncpy_s funkce:
#include <string.h>
#define MAX 15
size_t f( )
{
char szDest[MAX];
char *szSource= "Hello, World!";
strncpy_s(szDest, sizeof(szDest), szSource, strlen(szSource));
return strlen(szDest);
}
Všimněte si, že je toto upozornění na některé idioms zaručeno bezpečné v praxi někdy vykázána.Četnost a potenciální důsledky této vady se s předpětím analytický nástroj namísto hledání možných problémů místo jeho typické bias ke snižování hluku.
Viz také
Referenční dokumentace
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l