Опасные функции вызывают возможное переполнение буфера в целевом буфере
Эта проблема происходит, когда ваш код использует стандартные функции, которые записывают данные к буферу способом, который может привести к переполнению буфера.
В следующей таблице перечислены опасные стандартные функции, риски использования каждой функции, и что функция использовать вместо этого. Флаги средства проверки:
Любое использование по сути опасной функции.
Использование возможно опасной функции, только если размер буфера, в который записаны данные, может быть определен во время компиляции. Средство проверки не отмечает использование такой функции с динамически выделенным буфером.
| Опасная функция | Рискните уровнем | Более безопасная функция |
|---|---|---|
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)