Figyelmeztetés C28719

Tiltott API-használat: függvénynév nem biztonságos, és elavultként lett megjelölve.

Ez a figyelmeztetés arra utal, hogy egy olyan függvényt használnak, amelyet betiltottak, és van egy robusztusabb vagy biztonságosabb alternatíva.

Megjegyzések

A hiba által érintett összes letiltott függvény listája, a letiltásuk oka és a javasolt helyettesítések az alábbi példa után találhatók.

Kódelemzés neve: BANNED_API_USAGE

Példa

A következő kód generálja ezt a figyelmeztetést:

void example_func(PSTR src) 
{ 
    char dst[100]; 
    strcpy(dst, src);
} 

Ez a probléma a nem biztonságos strcpyfüggvény használatából ered. strcpy nem ellenőrzi, hogy a célpuffer elég nagy-e a forrásadatoknak való igazításhoz.

A probléma megoldásához használhatjuk a strcpy_s függvényt, amely a C++11 egy biztonságosabb alternatívája ennek a funkciónak. strcpy_s egy harmadik paraméterrel (a célpuffer méretével) rendelkezik, hogy csak több bájt legyen másolva. A következő kód például biztonságosabb:

void example_func(PSTR src) 
{ 
    char dst[100]; 
    strcpy_s(dst, sizeof(dst), src); 
}

Tiltott függvények

MEGJEGYZÉS: Ez a lista folyamatosan frissül és továbbfejlesztés alatt áll

Tiltott API Csere(ek) Érvek / Megjegyzések
_fstrcat StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Örökölt, 16 bites távoli mutató implementálása
_fstrcpy StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Korábbi, 16 bites távoli mutató implementációja
_fstrncat StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx Örökölt, 16 bites távoli mutató implementálása
_fstrncpy strncpy, wcsncpy Régi típusú, 16 bites távoli mutató implementálása
_ftccat strcat, wcscat Örökölt, 16 bites távoli mutató implementálása
_ftccpy strcpy, wcscpy Örökölt, 16 bites távoli mutató implementálása
_ftcscat strcat, wcscat Örökölt, 16 bites távoli mutató implementálása
_ftcscpy strcpy, wcscpy Régi 16 bites távoli mutató implementálása
_getts StringCbGets, StringCbGetsEx, StringCchGets, StringCchGetsEx, gets_s Nincs méretkorlát az adatokon
_gettws gets_s Nincs méretkorlát az adatokon
_getws _getws_s Nincs méretkorlát az adatokon
_mbccat strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat Nincs méretkorlát az adatokon
_makepath _makepath_s Nincs méretkorlát az adatokon
_mbscat _mbscat_s
_snprintf _snprintf_s Nem végződik NULL-végződéssel
_sntprintf StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx Nem végződik NULL-karakterrel
_sntscanf _snscanf_s Nincs maximális hossz
_snwprintf _snwprintf_s, StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx Nem végződik NULL-megszakítással
_splitpath _splitpath_s Nincs korlátellenőrzés
_stprintf StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx Korlátozott hibaészlelés
_stscanf sscanf_s (sztringmódosításokat igényel) Nincs korlátellenőrzés
_tccat strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat Nincs korlátellenőrzés
_tccpy strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy Nincs korlátellenőrzés
_tcscat StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
_tcscpy StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Korlátozott hibaészlelés
_tcsncat StringCbLength, StringCchLength, UnalignedStringCbLength, UnalignedStringCchLength Nincs maximális hossz
_tcsncpy StringCbCopyN, StringCbCopyNEx, StringCchCopyN, StringCchCopyNEx Korlátozott hibaészlelés
_tmakepath _makepath_s Nincs korlátellenőrzés
_tscanf scanf_s Nincsenek korlátok a kimenetek ellenőrzésekor
_tsplitpath splitpath_s, wsplitpath_s Nincs korlátellenőrzés
_vsnprintf _vsnprintf_s, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Korlátozott hibaészlelés
_vsntprintf StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Korlátozott hibaészlelés
_vsnwprintf _vsnwprintf_s, StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx Korlátozott hibaészlelés
_vstprintf StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrinfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Nincs maximális hossz
_wmakepath _wmakepath_s Nincs korlátellenőrzés
_wsplitpath _wsplitpath_s Nincs korlátellenőrzés
OemToCharW WideCharToMultiByte Nincs korlátellenőrzés
StrCat StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
StrCatA StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
StrCatBuff StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Nincs NULL-végződés
StrCatBuffA StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Nincs NULL-lezárás
StrCatBuffW StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Nincs NULL-termináció
StrCatChainW StringCbCatEx, StringCbCatNEx, StringCchCatEx, StringCchCatNEx Nincs NULL-végződés
StrCatN StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx Nincs korlátellenőrzés
StrCatNA StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx Nincs korlátellenőrzés
StrCatNW StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx Nincs korlátellenőrzés
StrCatW StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx Nincs korlátellenőrzés
StrCpy StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nincs korlátellenőrzés
StrCpyA StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nincs korlátellenőrzés
StrCpyN StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nem végződik NULL-karakterrel
StrCpyNA StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nem végződik NULL-karakterrel
StrCpyNW StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Korlátozott hibaellenőrzés
strcpyW StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nincs korlátellenőrzés
StrCpyW StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nincs korlátellenőrzés
StrNCat StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx Korlátozott hibaészlelés
StrNCatA StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx Korlátozott hibaészlelés
StrNCatW StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx Korlátozott hibaészlelés
StrNCpy StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nem végződik NULL-terminátorral
StrNCpyA StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nem végződik NULL-terminátorral
StrNCpyW StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nem végződik null-végződéssel
gets gets_s, fgets, StringCbGets, StringCbGetsEx, StringCchGets, StringCchGetsEx Korlátozott hibaészlelés; elavult a C11 szabvány
lstrcat StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
lstrcatA StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
lstrcatn StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
lstrcatnA StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
lstrcatnW StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
lstrcatW StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
lstrcpy StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nincs korlátellenőrzés
lstrcpyA StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nincs korlátellenőrzés
lstrcpyn StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Korlátozott hibaészlelés
lstrcpynA StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Korlátozott hibaészlelés
lstrcpynW StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nincs korlátellenőrzés
lstrcpyW StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx Nincs korlátellenőrzés
snscanf sscanf_s Nincs korlátellenőrzés
snwscanf swscanf_s Nincs korlátellenőrzés
sprintf sprintf_s Korlátozott hibaészlelés
sprintfA sprintf_s Nincs korlátellenőrzés
sprintfW swprintf_s Nincs korlátellenőrzés
lstrncat StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx Korlátozott hibaészlelés
makepath
nsprintf sprintf_s Nincs hibaészlelés vagy határellenőrzés
strcat strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat Korlátozott hibaészlelés
strcatA strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat Korlátozott hibaészlelés
strcatW strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat Korlátozott hibaészlelés
strcpy strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy Nincs korlátellenőrzés
strcpyA strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy Nincs korlátellenőrzés
strncat strncat_s, StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx, strlcat Korlátozott hibaészlelés
strncpy strncpy_s, StringCbCopyN, StringCbCopyNEx, StringCchCopyN, StringCchCopyNEx, strlcpy Korlátozott hibaészlelés
swprintf swprintf_s StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintf, StringCbPrintfEx Korlátozott hibaészlelés
ualstrcpyW strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy Nincs korlátellenőrzés
vsnprintf vsnprintf_s, StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Korlátozott hibaészlelés
vsprintf vsprintf_s, StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx, vasprintf Korlátozott hibaészlelés
vswprintf vswprintf_s
wcscat wcscat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, wcslcat Korlátozott hibaészlelés
wcscpy wcscpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, wcslcpy Nincs korlátellenőrzés
wcsncat wcsncat_s, wcslcat Korlátozott hibaészlelés
wcsncpy wcsncpy_s, StringCbCopyN, StringCbCopyNEx, StringCchCopyN, StringCchCopyNEx, wcslcpy Korlátozott hibaészlelés
wnsprintf StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx Nincs NULL-végződés
wnsprintfA StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx Nincs NULL-véges karakter
wsprintf StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx Nincs NULL-végződés
wsprintfA StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx Nincs NULL-vége
wsprintfW StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx Nincs NULL-vége
wvnsprintf StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Nincs NULL-végződés
wvnsprintfA StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Nincs NULL-végződés
wvnsprintfW StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Nincs NULL-végződés
wvsprintf StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Nincs NULL-vége
wvsprintfA StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Nincs NULL-lezárás
wvsprintfW StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx Nincs NULL-vége