Размер буфера памяти является числовым значением вместо символьной константы
Этот дефект возникает, когда вы используете числовое значение вместо символьной константы при объявлении буфера памяти, такого как массив.
Жесткий buffer size вызывает следующие проблемы:
Жестко закодированный buffer size увеличивает вероятность ошибок и, следовательно, затрат на обслуживание. Если изменение политики требует, чтобы разработчики изменили buffer size, они должны изменять каждое вхождение buffer size в коде.
Постоянные константы могут подвергаться атаке, если код раскрыт.
Используйте символьное имя вместо жестко закодированной константы для buffer size. Символические имена включают const
-квалифицированные переменные, enum
константы или макросы.
enum
рекомендуемые константы.
Макросы заменяются их постоянными значениями после предварительной обработки. Поэтому они могут открыть границу цикла.
enum
константы известны во время компиляции. Поэтому компиляторы могут оптимизировать циклы более эффективно.
const
-квалифицированные переменные обычно известны во время исполнения.
Группа: Хорошая практика |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки: HARD_CODED_BUFFER_SIZE |
Влияние: Низкое |
ИДЕНТИФИКАТОР CWE: 547 |