Freigeben über


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