Compartir vía


InfiniteLoop (consulta codeQL del controlador de Windows)

Información general

Las comparaciones entre tipos de distintos anchos en una condición de bucle pueden hacer que el bucle no finalice.

Recomendación

Use los tipos adecuados en la condición de bucle.

Ejemplo

En este ejemplo, el resultado de la comparación puede dar lugar a un bucle infinito si el valor del argumento es mayor que SHRT_MAX:

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

Para corregir el error, estamos cambiando el tipo de la variable i para que coincida con el ancho de un :

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

Detalles adicionales

Esta consulta se puede encontrar en el repositorio de Microsoft GitHub CodeQL. Consulte la página CodeQL y static Tools Logo Test (Prueba de logotipo de herramientas estáticas ) para obtener más información sobre cómo los desarrolladores de Controladores de Windows pueden descargar y ejecutar CodeQL.