Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 |