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
La vérification du dépassement d’un ajout en comparant à l’un des arguments de l’ajout échoue si la taille de tous les types d’arguments est inférieure à 4 octets. Cela est dû au fait que le résultat de l’ajout est promu vers un int de 4 octets.
Recommandation
Vérifiez le dépassement en comparant l’ajout à une valeur d’au moins 4 octets.
Exemple :
Dans cet exemple, le résultat de la comparaison entraîne un dépassement de capacité entier :
unsigned short CheckForInt16OverflowBadCode(unsigned short v, unsigned short b)
{
if (v + b < v) // BUG: "v + b" will be promoted to 32 bits
{
// ... do something
}
return v + b;
}
Pour corriger le bogue, vérifiez le dépassement en comparant l’ajout à une valeur d’au moins 4 octets :
unsigned short CheckForInt16OverflowCorrectCode(unsigned short v, unsigned short b)
{
if (v + b > 0x00FFFF)
{
// ... do something
}
return v + b;
}
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.