Опасные функции вызывают возможное переполнение буфера в целевом буфере
Эта проблема происходит, когда ваш код использует стандартные функции, которые записывают данные к буферу способом, который может привести к переполнению буфера.
В следующей таблице перечислены опасные стандартные функции, риски использования каждой функции, и что функция использовать вместо этого. Флаги средства проверки:
Любое использование по сути опасной функции.
Использование возможно опасной функции, только если размер буфера, в который записаны данные, может быть определен во время компиляции. Средство проверки не отмечает использование такой функции с динамически выделенным буфером.
Опасная функция | Рискните уровнем | Более безопасная функция |
---|---|---|
gets | По сути опасный — Вы не можете управлять длиной входа от консоли. | fgets |
cin | По сути опасный — Вы не можете управлять длиной входа от консоли. | Избегайте или вызовы предисловий cin с cin.width . |
strcpy | Возможно опасный — Если исходная длина больше места назначения, переполнение буфера может произойти. | strncpy |
stpcpy | Возможно опасный — Если исходная длина больше места назначения, переполнение буфера может произойти. | stpncpy |
lstrcpy или StrCpy | Возможно опасный — Если исходная длина больше места назначения, переполнение буфера может произойти. | StringCbCopy , StringCchCopy , strncpy , strcpy_s , или strlcpy |
strcat | Возможно опасный — Если конкатенированный результат больше места назначения, переполнение буфера может произойти. | strncat , strlcat , или strcat_s |
lstrcat или StrCat | Возможно опасный — Если конкатенированный результат больше места назначения, переполнение буфера может произойти. | StringCbCat , StringCchCat , strncay , strcat_s , или strlcat |
wcpcpy | Возможно опасный — Если исходная длина больше места назначения, переполнение буфера может произойти. | wcpncpy |
wcscat | Возможно опасный — Если конкатенированный результат больше места назначения, переполнение буфера может произойти. | wcsncat , wcslcat , или wcncat_s |
wcscpy | Возможно опасный — Если исходная длина больше места назначения, переполнение буфера может произойти. | wcsncpy |
sprintf | Возможно опасный — Если продолжительность выхода зависит от неизвестных длин или значений, переполнение буфера может произойти. | snprintf |
vsprintf | Возможно опасный — Если продолжительность выхода зависит от неизвестных длин или значений, переполнение буфера может произойти. | vsnprintf |
Эти функции могут вызвать переполнение буфера, которое атакующие могут использовать, чтобы пропитать вашу программу.
Фиксация зависит от первопричины дефекта. Смотрите фиксирует в приведенной выше таблице и примерах кода с мерами ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. См.:
Обратитесь к Результатам Polyspace Через Исправления ошибок или Выравнивания, если вы рассматриваете результаты в пользовательском интерфейсе Polyspace.
Обратитесь к Результатам в Polyspace доступ Через Исправления ошибок или Выравнивания, если вы рассматриваете результаты в веб-браузере.
Аннотируйте Код и Скройте Известные или Приемлемые результаты, если вы рассматриваете результаты в IDE.
Группа: безопасность |
Язык: C | C++ |
Значение по умолчанию: Off |
Синтаксис командной строки:
DANGEROUS_STD_FUNC |
Удар: низко |
ID CWE: 242, 676 |
Use of obsolete standard function
| Unsafe standard function
| Invalid use of standard library string routine
| Find defects (-checkers)