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