Предупреждение 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 |