InfiniteLoop(Windows 驱动程序 CodeQL 查询)
概述
循环条件中不同宽度的类型之间的比较可能会导致循环无法终止。
建议
在循环条件中使用适当的类型。
示例
在此示例中,如果 参数的值大于 SHRT_MAX,则比较结果可能会导致无限循环:
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
为了修复该 bug,我们将更改变量 i 的类型,以匹配 的宽度:
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
其他详细信息
可以在 Microsoft GitHub CodeQL 存储库中找到此查询。 有关 Windows 驱动程序开发人员如何下载和运行 CodeQL 的详细信息,请参阅 CodeQL 和静态工具徽标测试 页。