InfiniteLoop (Windows Driver CodeQL Query)
Overview
Comparisons between types of different widths in a loop condition can cause the loop to fail to terminate.
Recommendation
Use appropriate types in the loop condition.
Example
In this example, the result of the comparison may result in an infinite loop if the value for argument: a is larger than SHRT_MAX:
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
To fix the bug, we are changing the type for the variable i to match the width of a:
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Additional Details
This query can be found in the Microsoft GitHub CodeQL repository. See the CodeQL and the Static Tools Logo Test page for details on how Windows Driver developers can download and run CodeQL.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: I hele 2024 udfaser vi GitHub-problemer som feedbackmekanisme for indhold og erstatter det med et nyt feedbacksystem. Du kan få flere oplysninger under:Indsend og få vist feedback om