Предупреждение C28726

Запрещенное использование API: "*function-name" является небезопасным и помечен как нерекомендуемый.

Это предупреждение указывает, что используется функция, которая была заблокирована и имеет более надежную или безопасную замену. Эта конкретная ошибка указывает на то, что запрещенная функция может переполнять буфер.

Комментарии

Список всех запрещенных функций, на которые распространяется эта ошибка, причины их запрета и рекомендуемые замены можно найти после следующего примера.

Имя анализа кода: BANNED_API_USAGEL2

Пример

Следующий код создает это предупреждение:

void example_func() 
{ 
    char user_input[10]; 
    scanf(“%s”, input); // scanf is banned for security purposes 
} 

Это связано с использованием небезопасной функции scanf. scanf устанавливает любое ограничение на размер данных, копируемых в буфер. Чтобы устранить эту проблему, можно использовать scanf_sболее безопасную замену этой функции. scanf_s требует от разработчика указать, сколько байтов планируется скопировать. scanf_s обеспечивает только копирование большого количества байтов. Например, следующий код является более безопасным:

void example_func() 
{ 
    char user_input[10]; 
    scanf_s(“%9s”, input, sizeof(input)); // 9 bytes leaves room for the \0 byte at the end  
} 

Запрещенные функции

ПРИМЕЧАНИЕ. Этот список активно обновляется и улучшается.

Запрещенный API Замена Обоснование и примечания
_itoa _itoa_s Не завершается со значением NULL
_i64toa _i64toa_s Не завершается со значением NULL
_i64tow _i64tow_s Не завершается со значением 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 Ограниченное обнаружение ошибок
sscanf sscanf_s Ограниченное обнаружение ошибок
wmemcpy wmemcpy_s Ограниченное обнаружение ошибок
wnsprintfW
wscanf wscanf_s