Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Aperçu
Les comparaisons entre des types de largeurs différentes dans une condition de boucle peuvent empêcher la boucle de se terminer.
Recommandation
Utilisez les types appropriés dans la condition de boucle.
Exemple :
Dans cet exemple, le résultat de la comparaison peut entraîner une boucle infinie si la valeur pour l’argument a est supérieure à SHRT_MAX :
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
Pour corriger le bogue, nous modifions le type de la variable i pour qu’elle corresponde à la largeur d’un :
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Informations supplémentaires
Cette requête se trouve dans le référentiel Microsoft GitHub CodeQL. Consultez la page CodeQL et Static Tools Logo Test pour plus d’informations sur la façon dont les développeurs windows Driver peuvent télécharger et exécuter CodeQL.