Поделиться через


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);
}

См. также

Основные понятия

Общие сведения о заметках

Ссылки

C6053

NullTerminated