Строка в стиле C должна гарантировать достаточное пространство для данных и нулевого терминатора
Строка в стиле C должна гарантировать достаточное пространство для данных и нулевого терминатора.
Строки в стиле C не только требуют пробела для записанных символьных данных, но и требуют одного явного символа в конце для дополнительного нулевого терминатора. Непринятие необходимого пространства приводит к переполнению буфера, что приводит к повреждению памяти, уязвимостям безопасности и другим проблемам.
Средство проверки ищет следующие проблемы:
Использование опасной стандартной функции.
Эта проблема возникает при использовании функций C, таких как gets и strcpy, которые записывают данные в буфер, но не обеспечивают управление длиной записанных данных.
Более полный список функций и их более безопасных альтернатив см. в разделе Use of dangerous standard function.
Переполнение буфера из неверного спецификатора формата строки.
Эта проблема возникает, когда аргумент спецификатора формата для функций C, таких как sscanf приводит к переполнению или занижению в аргументе буфера памяти.
Переполнение буфера назначения при обработке строк.
Эта проблема возникает, когда определенные функции манипуляции строками C записывают в аргумент целевого буфера со смещением, большим, чем размер буфера.
Например, при вызове функции sprintf(char* buffer, const char* format), используется постоянная строка format большего размера, чем buffer.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Библиотека ввода/вывода |
| Категория: Консультации, Автоматизированные |