Опасные функции вызывают возможное переполнение буфера в буфере назначения
Эта проблема возникает, когда ваш код использует стандартные функции, которые записывают данные в буфер таким образом, который может привести к переполнению буфера.
В следующей таблице перечислены опасные стандартные функции, риски использования каждой функции и какие функции использовать вместо этого. Флажки шашки:
Любое использование по своей сути опасной функции.
Использование возможно опасной функции только в том случае, если размер буфера, в который записываются данные, может быть определено во время компиляции. Шашка не помечает использование такой функции динамически выделенным буфером.
Опасная функция | Уровень риска | Более безопасная функция |
---|---|---|
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 |
Эти функции могут вызвать переполнение буфера, которое злоумышленники могут использовать, чтобы проникнуть в вашу программу.
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Вы можете реализовать исправление на любом событии в последовательности. Если сведения о результате не отображают историю событий, можно отследить их с помощью опций правого щелчка в исходном коде и просмотреть предыдущие связанные события. Смотрите также Результаты интерпретации Bug Finder в интерфейсе пользователя Polyspace Desktop.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к своему результату или коду, чтобы избежать другой проверки. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.
Группа: Безопасность |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки
: DANGEROUS_STD_FUNC |
Влияние: Низкое |
ИДЕНТИФИКАТОР CWE : 242, 676 |
Find defects (-checkers)
| Invalid use of standard library string routine
| Unsafe standard function
| Use of obsolete standard function