Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Yasaklanmış API Kullanımı: işlev adı güvenli değildir ve kullanım dışı olarak işaretlenmiştir.
Bu uyarı, yasaklanmış ve daha sağlam veya güvenli bir değiştirmesi olan bir işlevin kullanıldığını gösterir.
Açıklamalar
Bu hatanın kapsamına alınan tüm yasaklanmış işlevlerin listesi, bunların neden yasaklandığı ve önerilen değiştirmeler aşağıdaki örnekten sonra bulunabilir.
Kod analizi adı: BANNED_API_USAGE
Örnek
Aşağıdaki kod bu uyarıyı oluşturur:
void example_func(PSTR src)
{
char dst[100];
strcpy(dst, src);
}
Bu sorun, strcpygüvenli olmayan işlevinin kullanımından kaynaklandığını gösterir.
strcpy hedef arabelleğin kaynak verilere sığacak kadar büyük olup olmadığını denetlemez.
Bu sorunu çözmek için, C++11'in bu işlev için sunduğu daha güvenli bir alternatif olan strcpy_s'i kullanabiliriz.
strcpy_s, yalnızca çok sayıda bayt kopyalandığından emin olmak için üçüncü bir parametreye (hedef arabelleğin boyutu) sahiptir. Örneğin, aşağıdaki kod daha güvenlidir:
void example_func(PSTR src)
{
char dst[100];
strcpy_s(dst, sizeof(dst), src);
}
Yasaklanmış İşlevler
NOT: Bu liste etkin bir şekilde güncelleniyor ve geliştiriliyor
| Yasaklanmış API | Değiştirmeler | Gerekçe / Notlar |
|---|---|---|
_fstrcat |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Eski 16 bit uzak işaretçi uygulaması |
_fstrcpy |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Eski 16 bit uzak işaretçi uygulaması |
_fstrncat |
StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx |
Eski 16 bit uzak işaretçi uygulaması |
_fstrncpy |
strncpy, wcsncpy |
Eski 16 bit uzak işaretçi uygulaması |
_ftccat |
strcat, wcscat |
Eski 16 bit uzak işaretçi uygulaması |
_ftccpy |
strcpy, wcscpy |
Eski 16 bit uzak işaretçi uygulaması |
_ftcscat |
strcat, wcscat |
Eski 16 bit uzak işaretçi uygulaması |
_ftcscpy |
strcpy, wcscpy |
Eski 16 bit uzak işaretçi uygulaması |
_getts |
StringCbGets, StringCbGetsEx, StringCchGets, StringCchGetsEx, gets_s |
Verilerde boyut sınırı yok |
_gettws |
gets_s |
Verilerde boyut sınırı yok |
_getws |
_getws_s |
Verilerde boyut sınırı yok |
_mbccat |
strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat |
Verilerde boyut sınırı yok |
_makepath |
_makepath_s |
Verilerde boyut sınırı yok |
_mbscat |
_mbscat_s |
|
_snprintf |
_snprintf_s |
NULL ile sonlandırılmaz |
_sntprintf |
StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx |
NULL ile sonlandırılmaz |
_sntscanf |
_snscanf_s |
Uzunluk üst sınırı yok |
_snwprintf |
_snwprintf_s, StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx |
NULL ile sonlandırılmaz |
_splitpath |
_splitpath_s |
Sınır denetimi yok |
_stprintf |
StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx |
Sınırlı hata algılama |
_stscanf |
sscanf_s (biçim dizesi değişiklikleri gerektirir) |
Sınır denetimi yok |
_tccat |
strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat |
Sınır denetimi yok |
_tccpy |
strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy |
Sınır denetimi yok |
_tcscat |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
_tcscpy |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınırlı hata algılama |
_tcsncat |
StringCbLength, StringCchLength, UnalignedStringCbLength, UnalignedStringCchLength |
Uzunluk üst sınırı yok |
_tcsncpy |
StringCbCopyN, StringCbCopyNEx, StringCchCopyN, StringCchCopyNEx |
Sınırlı hata algılama |
_tmakepath |
_makepath_s |
Sınır denetimi yok |
_tscanf |
scanf_s |
Çıkışlar için sınır denetimi yok |
_tsplitpath |
splitpath_s, wsplitpath_s |
Sınır denetimi yok |
_vsnprintf |
_vsnprintf_s, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
Sınırlı hata algılama |
_vsntprintf |
StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
Sınırlı hata algılama |
_vsnwprintf |
_vsnwprintf_s, StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx |
Sınırlı hata algılama |
_vstprintf |
StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrinfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
Uzunluk üst sınırı yok |
_wmakepath |
_wmakepath_s |
Sınır denetimi yok |
_wsplitpath |
_wsplitpath_s |
Sınır denetimi yok |
OemToCharW |
WideCharToMultiByte |
Sınır denetimi yok |
StrCat |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
StrCatA |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
StrCatBuff |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
NULL sonlandırma yok |
StrCatBuffA |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
NULL sonlandırma yok |
StrCatBuffW |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
NULL sonlandırma yok |
StrCatChainW |
StringCbCatEx, StringCbCatNEx, StringCchCatEx, StringCchCatNEx |
NULL ile sonlandırma yok |
StrCatN |
StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx |
Sınır denetimi yok |
StrCatNA |
StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx |
Sınır denetimi yok |
StrCatNW |
StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx |
Sınır denetimi yok |
StrCatW |
StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx |
Sınır denetimi yok |
StrCpy |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınır denetimi yok |
StrCpyA |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınır denetimi yok |
StrCpyN |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
NULL ile sonlandırılmaz |
StrCpyNA |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
NULL ile sonlandırılmaz |
StrCpyNW |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınırlı hata denetimi |
strcpyW |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınır denetimi yok |
StrCpyW |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınır denetimi yok |
StrNCat |
StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx |
Sınırlı hata algılama |
StrNCatA |
StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx |
Sınırlı hata algılama |
StrNCatW |
StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx |
Sınırlı hata algılama |
StrNCpy |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
NULL ile sonlandırılmaz |
StrNCpyA |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
NULL ile sonlandırılmaz |
StrNCpyW |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
NULL ile sonlandırılmaz |
gets |
gets_s, fgets, StringCbGets, StringCbGetsEx, StringCchGets, StringCchGetsEx |
Sınırlı hata algılama; C11 standardı tarafından kullanım dışı bırakıldı |
lstrcat |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
lstrcatA |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
lstrcatn |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
lstrcatnA |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
lstrcatnW |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
lstrcatW |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
lstrcpy |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınır denetimi yok |
lstrcpyA |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınır denetimi yok |
lstrcpyn |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınırlı hata algılama |
lstrcpynA |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınırlı hata algılama |
lstrcpynW |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınır denetimi yok |
lstrcpyW |
StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx |
Sınır denetimi yok |
snscanf |
sscanf_s |
Sınır denetimi yok |
snwscanf |
swscanf_s |
Sınır denetimi yok |
sprintf |
sprintf_s |
Sınırlı hata algılama |
sprintfA |
sprintf_s |
Sınır denetimi yok |
sprintfW |
swprintf_s |
Sınır denetimi yok |
lstrncat |
StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx |
Sınırlı hata algılama |
makepath |
||
nsprintf |
sprintf_s |
Hata algılama veya sınır denetimi yok |
strcat |
strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat |
Sınırlı hata algılama |
strcatA |
strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat |
Sınırlı hata algılama |
strcatW |
strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat |
Sınırlı hata algılama |
strcpy |
strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy |
Sınır denetimi yok |
strcpyA |
strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy |
Sınır denetimi yok |
strncat |
strncat_s, StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx, strlcat |
Sınırlı hata algılama |
strncpy |
strncpy_s, StringCbCopyN, StringCbCopyNEx, StringCchCopyN, StringCchCopyNEx, strlcpy |
Sınırlı hata algılama |
swprintf |
swprintf_s
StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintf, StringCbPrintfEx |
Sınırlı hata algılama |
ualstrcpyW |
strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy |
Sınır denetimi yok |
vsnprintf |
vsnprintf_s, StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
Sınırlı hata algılama |
vsprintf |
vsprintf_s, StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx, vasprintf |
Sınırlı hata algılama |
vswprintf |
vswprintf_s |
|
wcscat |
wcscat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, wcslcat |
Sınırlı hata algılama |
wcscpy |
wcscpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, wcslcpy |
Sınır denetimi yok |
wcsncat |
wcsncat_s, wcslcat |
Sınırlı hata algılama |
wcsncpy |
wcsncpy_s, StringCbCopyN, StringCbCopyNEx, StringCchCopyN, StringCchCopyNEx, wcslcpy |
Sınırlı hata algılama |
wnsprintf |
StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx |
NULL sonlandırma yok |
wnsprintfA |
StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx |
NULL sonlandırma yok |
wsprintf |
StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx |
NULL ile bitirme yok |
wsprintfA |
StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx |
NULL ile sonlandırma yapılmıyor |
wsprintfW |
StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx |
NULL ile sonlandırma yok |
wvnsprintf |
StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
NULL ile sonlandırma yok |
wvnsprintfA |
StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
NULL sonlandırma yok |
wvnsprintfW |
StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
"NULL" ile termine edilmedi |
wvsprintf |
StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
NULL sonlandırması yapılmamış |
wvsprintfA |
StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
NULL ile sonlandırma yapılmamış |
wvsprintfW |
StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx |
NULL sonlandırma yok |