Warnung C28719
Gesperrte API-Verwendung: function-name ist unsicher ist und wurde als veraltet gekennzeichnet.
Diese Warnung gibt an, dass eine Funktion verwendet wird, die gesperrt wurde und einen robusteren oder sichereren Ersatz aufweist.
Hinweise
Eine Liste aller gesperrten Funktionen, die von diesem Fehler abgedeckt werden, warum sie gesperrt sind, und empfohlene Ersetzungen finden Sie nach dem folgenden Beispiel.
Name der Codeanalyse: BANNED_API_USAGE
Beispiel
Der folgende Code generiert diese Warnung:
void example_func(PSTR src)
{
char dst[100];
strcpy(dst, src);
}
Dieses Problem stammt aus der Verwendung der unsicheren Funktion strcpy
. strcpy
überprüft nicht, ob der Zielpuffer groß genug ist, um die Quelldaten anzupassen.
Um dieses Problem zu beheben, können wir strcpy_s, C++11s sichereren Ersatz für diese Funktion verwenden. strcpy_s
verfügt über einen dritten Parameter (die Größe des Zielpuffers), um sicherzustellen, dass nur viele Bytes kopiert werden. Beispielsweise ist der folgende Code sicherer:
void example_func(PSTR src)
{
char dst[100];
strcpy_s(dst, sizeof(dst), src);
}
Gesperrte Funktionen
HINWEIS: Diese Liste wird aktiv aktualisiert und verbessert
Gesperrte API | Ersetzung(en) | Rationale /Notizen |
---|---|---|
_fstrcat |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Ältere 16-Bit-Fernzeigerimplementierung |
_fstrcpy |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Ältere 16-Bit-Fernzeigerimplementierung |
_fstrncat |
StringCbCatN , StringCbCatNEx , StringCchCatN , StringCchCatNEx |
Ältere 16-Bit-Fernzeigerimplementierung |
_fstrncpy |
strncpy , wcsncpy |
Ältere 16-Bit-Fernzeigerimplementierung |
_ftccat |
strcat , wcscat |
Ältere 16-Bit-Fernzeigerimplementierung |
_ftccpy |
strcpy , wcscpy |
Ältere 16-Bit-Fernzeigerimplementierung |
_ftcscat |
strcat , wcscat |
Ältere 16-Bit-Fernzeigerimplementierung |
_ftcscpy |
strcpy , wcscpy |
Ältere 16-Bit-Fernzeigerimplementierung |
_getts |
StringCbGets , StringCbGetsEx , StringCchGets , StringCchGetsEx , gets_s |
Keine Größenbeschränkung für Daten |
_gettws |
gets_s |
Keine Größenbeschränkung für Daten |
_getws |
_getws_s |
Keine Größenbeschränkung für Daten |
_mbccat |
strcat_s , StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx , strlcat |
Keine Größenbeschränkung für Daten |
_makepath |
_makepath_s |
Keine Größenbeschränkung für Daten |
_mbscat |
_mbscat_s |
|
_snprintf |
_snprintf_s |
Endet nicht auf NULL |
_sntprintf |
StringCbPrintf , StringCbPrintf_l , StringCbPrintf_lEx , StringCbPrintfEx , StringCchPrintf , StringCchPrintfEx |
Endet nicht auf NULL |
_sntscanf |
_snscanf_s |
Keine maximale Länge |
_snwprintf |
_snwprintf_s , StringCbPrintf , StringCbPrintf_l , StringCbPrintf_lEx , StringCbPrintfEx , StringCchPrintf , StringCchPrintfEx |
Endet nicht auf NULL |
_splitpath |
_splitpath_s |
Keine Begrenzungsprüfung |
_stprintf |
StringCbPrintf , StringCbPrintf_l , StringCbPrintf_lEx , StringCbPrintfEx , StringCchPrintf , StringCchPrintfEx |
Eingeschränkte Fehlererkennung |
_stscanf |
sscanf_s (erfordert Änderungen der Formatzeichenfolgen) |
Keine Begrenzungsprüfung |
_tccat |
strcat_s , StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx , strlcat |
Keine Begrenzungsprüfung |
_tccpy |
strcpy_s , StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx , strlcpy |
Keine Begrenzungsprüfung |
_tcscat |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
_tcscpy |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Eingeschränkte Fehlererkennung |
_tcsncat |
StringCbLength , StringCchLength , UnalignedStringCbLength , UnalignedStringCchLength |
Keine maximale Länge |
_tcsncpy |
StringCbCopyN , StringCbCopyNEx , StringCchCopyN , StringCchCopyNEx |
Eingeschränkte Fehlererkennung |
_tmakepath |
_makepath_s |
Keine Begrenzungsprüfung |
_tscanf |
scanf_s |
Keine Begrenzungsprüfung für Ausgaben |
_tsplitpath |
splitpath_s , wsplitpath_s |
Keine Begrenzungsprüfung |
_vsnprintf |
_vsnprintf_s , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Eingeschränkte Fehlererkennung |
_vsntprintf |
StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Eingeschränkte Fehlererkennung |
_vsnwprintf |
_vsnwprintf_s , StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx |
Eingeschränkte Fehlererkennung |
_vstprintf |
StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrinfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Keine maximale Länge |
_wmakepath |
_wmakepath_s |
Keine Begrenzungsprüfung |
_wsplitpath |
_wsplitpath_s |
Keine Grenzüberprüfung |
OemToCharW |
WideCharToMultiByte |
Keine Begrenzungsprüfung |
StrCat |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
StrCatA |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
StrCatBuff |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Keine NULL-Terminierung |
StrCatBuffA |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Keine NULL-Terminierung |
StrCatBuffW |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Keine NULL-Terminierung |
StrCatChainW |
StringCbCatEx , StringCbCatNEx , StringCchCatEx , StringCchCatNEx |
Keine NULL-Terminierung |
StrCatN |
StringCbCat , StringCbCatEx , StringCbCatN , StringCbCatNEx , StringCchCat , StringCchCatEx , StringCchCatN , StringCchCatNEx |
Keine Begrenzungsprüfung |
StrCatNA |
StringCbCat , StringCbCatEx , StringCbCatN , StringCbCatNEx , StringCchCat , StringCchCatEx , StringCchCatN , StringCchCatNEx |
Keine Grenzüberprüfung |
StrCatNW |
StringCbCat , StringCbCatEx , StringCbCatN , StringCbCatNEx , StringCchCat , StringCchCatEx , StringCchCatN , StringCchCatNEx |
Keine Begrenzungsprüfung |
StrCatW |
StringCbCat , StringCbCatEx , StringCbCatN , StringCbCatNEx , StringCchCat , StringCchCatEx , StringCchCatN , StringCchCatNEx |
Keine Begrenzungsprüfung |
StrCpy |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Keine Begrenzungsprüfung |
StrCpyA |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Keine Grenzüberprüfung |
StrCpyN |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Endet nicht auf NULL |
StrCpyNA |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Endet nicht auf NULL |
StrCpyNW |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Eingeschränkte Fehlerüberprüfung |
strcpyW |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Keine Grenzenüberprüfung |
StrCpyW |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Keine Begrenzungsprüfung |
StrNCat |
StringCbCatN , StringCbCatNEx , StringCchCatN , StringCchCatNEx |
Eingeschränkte Fehlererkennung |
StrNCatA |
StringCbCatN , StringCbCatNEx , StringCchCatN , StringCchCatNEx |
Eingeschränkte Fehlererkennung |
StrNCatW |
StringCbCatN , StringCbCatNEx , StringCchCatN , StringCchCatNEx |
Eingeschränkte Fehlererkennung |
StrNCpy |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Endet nicht auf NULL |
StrNCpyA |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Endet nicht auf NULL |
StrNCpyW |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Endet nicht auf NULL |
gets |
gets_s , fgets , StringCbGets , StringCbGetsEx , StringCchGets , StringCchGetsEx |
Eingeschränkte Fehlererkennung; veraltet durch den C11-Standard |
lstrcat |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
lstrcatA |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
lstrcatn |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
lstrcatnA |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
lstrcatnW |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
lstrcatW |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
lstrcpy |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Keine Begrenzungsprüfung |
lstrcpyA |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Keine Grenzüberprüfung |
lstrcpyn |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Eingeschränkte Fehlererkennung |
lstrcpynA |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Eingeschränkte Fehlererkennung |
lstrcpynW |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Keine Begrenzungsprüfung |
lstrcpyW |
StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx |
Keine Begrenzungsprüfung |
snscanf |
sscanf_s |
Keine Begrenzungsprüfung |
snwscanf |
swscanf_s |
Keine Begrenzungsprüfung |
sprintf |
sprintf_s |
Eingeschränkte Fehlererkennung |
sprintfA |
sprintf_s |
Keine Grenzüberprüfung |
sprintfW |
swprintf_s |
Keine Begrenzungsprüfung |
lstrncat |
StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx |
Eingeschränkte Fehlererkennung |
makepath |
||
nsprintf |
sprintf_s |
Keine Fehlererkennung oder Begrenzungsprüfung |
strcat |
strcat_s , StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx , strlcat |
Eingeschränkte Fehlererkennung |
strcatA |
strcat_s , StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx , strlcat |
Eingeschränkte Fehlererkennung |
strcatW |
strcat_s , StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx , strlcat |
Eingeschränkte Fehlererkennung |
strcpy |
strcpy_s , StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx , strlcpy |
Keine Begrenzungsprüfung |
strcpyA |
strcpy_s , StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx , strlcpy |
Keine Grenzüberprüfung |
strncat |
strncat_s , StringCbCatN , StringCbCatNEx , StringCchCatN , StringCchCatNEx , strlcat |
Eingeschränkte Fehlererkennung |
strncpy |
strncpy_s , StringCbCopyN , StringCbCopyNEx , StringCchCopyN , StringCchCopyNEx , strlcpy |
Eingeschränkte Fehlererkennung |
swprintf |
swprintf_s StringCbPrintf , StringCbPrintf_l , StringCbPrintf_lEx , StringCbPrintf , StringCbPrintfEx |
Eingeschränkte Fehlererkennung |
ualstrcpyW |
strcpy_s , StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx , strlcpy |
Keine Begrenzungsprüfung |
vsnprintf |
vsnprintf_s , StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Eingeschränkte Fehlererkennung |
vsprintf |
vsprintf_s , StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx , vasprintf |
Eingeschränkte Fehlererkennung |
vswprintf |
vswprintf_s |
|
wcscat |
wcscat_s , StringCbCat , StringCbCatEx , StringCchCat , StringCchCatEx , wcslcat |
Eingeschränkte Fehlererkennung |
wcscpy |
wcscpy_s , StringCbCopy , StringCbCopyEx , StringCchCopy , StringCchCopyEx , wcslcpy |
Keine Begrenzungsprüfung |
wcsncat |
wcsncat_s , wcslcat |
Eingeschränkte Fehlererkennung |
wcsncpy |
wcsncpy_s , StringCbCopyN , StringCbCopyNEx , StringCchCopyN , StringCchCopyNEx , wcslcpy |
Eingeschränkte Fehlererkennung |
wnsprintf |
StringCbPrintf , StringCbPrintf_l , StringCbPrintf_lEx , StringCbPrintfEx , StringCchPrintf , StringCchPrintfEx |
Keine NULL-Terminierung |
wnsprintfA |
StringCbPrintf , StringCbPrintf_l , StringCbPrintf_lEx , StringCbPrintfEx , StringCchPrintf , StringCchPrintfEx |
Keine NULL-Terminierung |
wsprintf |
StringCbPrintf , StringCbPrintf_l , StringCbPrintf_lEx , StringCbPrintfEx , StringCchPrintf , StringCchPrintfEx |
Keine NULL-Terminierung |
wsprintfA |
StringCbPrintf , StringCbPrintf_l , StringCbPrintf_lEx , StringCbPrintfEx , StringCchPrintf , StringCchPrintfEx |
Keine NULL-Terminierung |
wsprintfW |
StringCbPrintf , StringCbPrintf_l , StringCbPrintf_lEx , StringCbPrintfEx , StringCchPrintf , StringCchPrintfEx |
Keine NULL-Terminierung |
wvnsprintf |
StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Keine NULL-Terminierung |
wvnsprintfA |
StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Keine NULL-Terminierung |
wvnsprintfW |
StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Keine NULL-Terminierung |
wvsprintf |
StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Keine NULL-Terminierung |
wvsprintfA |
StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Keine NULL-Terminierung |
wvsprintfW |
StringCbVPrintf , StringCbVPrintf_l , StringCbVPrintf_lEx , StringCbVPrintfEx , StringCchVPrintf , StringCchVPrintf_l , StringCchVPrintf_lEx , StringCchVPrintfEx |
Keine NULL-Terminierung |