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