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