Avertissement C28726
Utilisation de l’API interdite : « *function-name » n’est pas sécurisé et a été marqué déprécié.
Cet avertissement indique qu’une fonction qui a été interdite est utilisée et qu’elle a un remplacement plus robuste ou plus sécurisé. Cette erreur spécifique indique que la fonction interdite a le potentiel de dépassement d’une mémoire tampon.
Remarques
Vous trouverez la liste de toutes les fonctions interdites couvertes par cette erreur, la raison pour laquelle elles sont interdites et les remplacements recommandés dans l’exemple suivant.
Nom de l’analyse du code : BANNED_API_USAGEL2
Exemple
Le code suivant génère cet avertissement :
void example_func()
{
char user_input[10];
scanf(“%s”, input); // scanf is banned for security purposes
}
Cela est dû à l’utilisation de la fonction scanf
non sécurisée . scanf
n’impose aucune limite à la taille des données copiées dans la mémoire tampon. Pour résoudre ce problème, nous pouvons utiliser scanf_s
, le remplacement plus sûr de cette fonction. scanf_s
exige que le développeur spécifie le nombre d’octets destinés à être copiés. scanf_s
garantit uniquement que de nombreux octets sont copiés. Par exemple, le code suivant est plus sûr :
void example_func()
{
char user_input[10];
scanf_s(“%9s”, input, sizeof(input)); // 9 bytes leaves room for the \0 byte at the end
}
Fonctions interdites
REMARQUE : Cette liste est activement mise à jour et améliorée
API interdite | Remplacement(s) | Justification / Notes |
---|---|---|
_itoa |
_itoa_s |
Ne se termine pas par null |
_i64toa |
_i64toa_s |
Ne se termine pas par null |
_i64tow |
_i64tow_s |
Ne se termine pas par null |
_mbccpy |
_mbccpy_s |
|
_mbscpy |
_mbscpy_s |
|
_mbsnbcpy |
_mbsnbcpy_s |
|
_mbsnbcat |
_mbsnbcat_s |
|
_mbsncat |
_mbsncat_s |
|
_mbsncpy |
_mbsncpy_s |
|
_mbstok |
_mbstok_s |
|
_snscanf |
_snscanf_s |
|
_snwscanf |
_snwscanf_s |
|
_ui64toa |
ui64toa_s |
|
_ui64tow |
_ui64tow_s |
|
_ultoa |
_ultoa_s |
|
CharToOemA |
||
CharToOemBuffA |
||
CharToOemBuffW |
||
CharToOemW |
||
OemToCharA |
||
OemToCharBuffA |
||
OemToCharBuffW |
||
scanf |
scanf_s |
Détection d’erreur limitée |
sscanf |
sscanf_s |
Détection d’erreur limitée |
wmemcpy |
wmemcpy_s |
Détection d’erreur limitée |
wnsprintfW |
||
wscanf |
wscanf_s |