次の方法で共有


C6054

警告 C6054: 文字列 <変数> は 0 で終了しない可能性があります。

この警告は、0 で終了する文字列が必要な関数に 0 以外で終了する文字列が渡されたことを示します。 0 で終了する文字列を想定する関数では、バッファーの終端を超えて 0 を検索してしまいます。 この問題によって、攻撃に利用される可能性のあるバッファー オーバーラン エラーまたはクラッシュが発生する場合があります。 プログラムで、文字列が 0 で終わることを確認する必要があります。

使用例

この警告が発生するコード例を次に示します。

#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 を null で終了させます。

void g( )
{
  wchar_t v[200]; 
  v[0]= '\0';
  f(v);
}

参照

参照

C6053

NullTerminated

概念

注釈の概要