InfiniteLoop (Windows Driver CodeQL クエリ)

概要

ループ条件内で異なる幅のタイプを比較すると、ループが終了に失敗する可能性があります。

推奨事項

ループ条件には適切なタイプを使用してください。

この例では、引数 a の値が SHRT_MAX より大きい場合、比較の結果が無限ループになる可能性があります。

void InfiniteLoop(int a)
{
    for (short i = 0; i < a; i++) // BUG: infinite loop
    {
        // ...
    }
}

バグを修正するために、変数 i の型を a の幅と一致するように変更しています。

void NotInfiniteLoop(int a)
{
    for (int i = 0; i < a; i++) 
    {
        // ...
    }
}

追加の詳細

このクエリは、Microsoft GitHub CodeQL リポジトリにあります。 Windows ドライバー開発者が CodeQL をダウンロードして実行する方法の詳細については、「CodeQL と静的ツールのロゴ テスト」ページを参照してください。