Megosztás:


InfiniteLoop (Windows Driver CodeQL-lekérdezés)

Áttekintés

A ciklusfeltételek különböző szélességű típusainak összehasonlítása a ciklus leállását okozhatja.

Ajánlás

Használjon megfelelő típusokat a ciklusfeltételben.

példa

Ebben a példában az összehasonlítás eredménye végtelen ciklust eredményezhet, ha az argumentum értéke: a nagyobb, mint SHRT_MAX:

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

A hiba kijavításához az i változó típusát úgy módosítjuk, hogy az megfeleljen a következő szélességnek:

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

További részletek

Ez a lekérdezés a Microsoft GitHub CodeQL-adattárban található. A CodeQL és a Static Tools emblématesztelési oldalán részletesen tájékozódhat arról, hogy a Windows-illesztőprogram-fejlesztők hogyan tölthetik le és futtathatják a CodeQL-t.