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