C6054
Обновлен: Ноябрь 2007
C6054
Предупреждение C6054. Возможно, строка <переменная> не завершается нулем
Данное предупреждение означает, что в функцию, которой требуется строка, завершающаяся нулем, передана строка, не завершающаяся нулем. Функция, которая ожидает нуль в качестве завершения строки, в поиске нуля выйдет за пределы буфера. В результате этой ошибки может возникнуть переполнение буфера, доступное для эксплойта, или сбой программы. В программе следует реализовать проверку того, что строка заканчивается нулем.
Пример
Данное предупреждение создается в следующем коде:
#include<codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f ([Pre(NullTerminated=Yes)] wchar_t* v);
void g ( )
{
wchar_t v[200];
f(v); // C6054 - v is not "null-terminated" before the call to f
}
Для устранения этого предупреждения перед вызовом функции f завершите переменную v знаком конца строки, как показано в следующем коде:
void g( )
{
wchar_t v[200];
v[0]= '\0';
f(v);
}