Advertencia C28726
Uso de LA API prohibida: '*function-name' no es seguro y se ha marcado como en desuso.
Esta advertencia indica que se está usando una función que se ha prohibido y tiene un reemplazo más sólido o seguro. Este error específico indica que la función prohibida puede desbordar un búfer.
Una lista de todas las funciones prohibidas cubiertas por este error, por qué están prohibidas y los reemplazos recomendados se pueden encontrar después del ejemplo siguiente.
Nombre del análisis de código: BANNED_API_USAGEL2
El código siguiente genera esta advertencia:
void example_func()
{
char user_input[10];
scanf(“%s”, input); // scanf is banned for security purposes
}
Esto se debe al uso de la función scanf
unsafe . scanf
coloca cualquier límite en el tamaño de los datos copiados en el búfer. Para corregir este problema, podemos usar scanf_s
, el reemplazo más seguro de esta función. scanf_s
requiere que el desarrollador especifique cuántos bytes se van a copiar. scanf_s
garantizará que solo se copien muchos bytes. Por ejemplo, el código siguiente es más seguro:
void example_func()
{
char user_input[10];
scanf_s(“%9s”, input, sizeof(input)); // 9 bytes leaves room for the \0 byte at the end
}
NOTA: Esta lista se está actualizando y mejorando activamente
API prohibida | Reemplazos | Justificación/Notas |
---|---|---|
_itoa |
_itoa_s |
No finaliza NULL |
_i64toa |
_i64toa_s |
No finaliza NULL |
_i64tow |
_i64tow_s |
No finaliza 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 |
Detección de errores limitada |
sscanf |
sscanf_s |
Detección de errores limitada |
wmemcpy |
wmemcpy_s |
Detección de errores limitada |
wnsprintfW |
||
wscanf |
wscanf_s |