次の方法で共有


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 と静的ツール のロゴ テスト ページを参照してください。