概要
ループ条件で異なる幅の型を比較すると、ループが終了しなくなる可能性があります。
勧告
ループ条件で適切な型を使用します。
例
この例では、引数 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 と静的ツール のロゴ テスト ページを参照してください。