Aracılığıyla paylaş


C6053

C6053 Uyarı: <function> çağrısı sıfır-dize <variable> sonlandırabilirsiniz.

Bu uyarı, belirtilen işlevi sonuç dizesi sıfır sonlandırılmış olabilir bir şekilde çağırıldı gösterir.Bu hata, bir etkilenme arabellek taşması veya kilitlenmesine neden.Açıklama eklenmiş bir işlev boş sonlandırılmış bir dize null olmayan bir dize geçildi bekliyorsa bu uyarıyı da üretilen sona erdi.

Çoğu standart c Kitaplığı ve Win32 dize işleme işlevlerini gerektirir ve sıfır dizelerin üretir.Birkaç 'dizesi sayılan' işlevleri (dahil olmak üzere strncpy, wcsncpy, _mbsncpy, _snprintf, ve snwprintf) tam olarak kendi arabellek doldurursanız sıfır dizelerin üretmez.Bu durumda, sıfır ile sonlandırılan bir dize bekliyor bir dize işlevi bir sonraki çağrı için sıfır bakan arabellek ötesinde gideceğim.Program, dize sıfır ile biten emin olmalısınız.Genel olarak, bir süre 'dizesi sayılan' işleve bir arabellek boyutundan daha küçük geçmesi ve açıkça sıfır arabellek son karakter olarak atayın.

Örnek

Aşağıdaki örnek kod, bu uyarı oluşturur:

#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
}

Bu uyarı düzeltmek için sıfır-aşağıdaki örnek kodda gösterildiği gibi dize sonlandırın:

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

Aşağıdaki örnek kodda bu güvenli dize işlemleri kullanarak uyarı düzeltir strncpy_s işlevi:

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

Bu uyarı uygulamada güvenli olduğu garanti belirli deyimleri üzerinde bazen bildirildiği dikkat etmelidirler.Sıklık ve olası sonuçlarını bu hata nedeniyle, Parazit Azaltma, tipik bias yerine olası sorunları bulma kullanıldığından kullanım dışı çözümleme aracı ağırlıklı.

Ayrıca bkz.

Başvuru

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l

Diğer Kaynaklar

Ek açıklama genel bakış

NullTerminated