Leer en inglés

Compartir a través de


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.

Comentarios

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

Ejemplo

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 scanfunsafe . 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  
} 

Funciones prohibidas

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