InfiniteLoop (запрос CodeQL драйвера Windows)
Общие сведения
Сравнение типов разной ширины в условии цикла может привести к сбою завершения цикла.
Рекомендация
Используйте соответствующие типы в условии цикла.
Пример
В этом примере результат сравнения может привести к бесконечному циклу, если значение аргумента : большеSHRT_MAX:
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
Чтобы устранить эту ошибку, мы изменяем тип переменной i в соответствии с шириной:
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Дополнительные сведения
Этот запрос можно найти в репозитории Microsoft GitHub CodeQL. Дополнительные сведения о том, как разработчики драйверов Windows могут скачать и запустить CodeQL, см. на странице CodeQL и static Tools Logo Test .