Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Informazioni generali
Controllare l'overflow di un'addizione confrontandolo con uno degli argomenti dell'addizione fallisce se la dimensione di tutti i tipi di argomento è inferiore a 4 byte. Ciò è dovuto al fatto che il risultato dell'aggiunta viene convertito a un intero a 4 byte.
Raccomandazione
Controllare l'overflow confrontando l'addizione con un valore di almeno 4 byte.
Esempio
In questo esempio, il risultato del confronto comporterà un overflow intero:
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;
}
Per correggere il bug, controllare l'overflow confrontando l'addizione con un valore di almeno 4 byte:
unsigned short CheckForInt16OverflowCorrectCode(unsigned short v, unsigned short b)
{
if (v + b > 0x00FFFF)
{
// ... do something
}
return v + b;
}
Dettagli aggiuntivi
Questa query è disponibile nel repository CodeQL di Microsoft GitHub. Per informazioni dettagliate sul modo in cui gli sviluppatori di driver Windows possono scaricare ed eseguire CodeQL, consultare la pagina CodeQL e il logo degli strumenti statici.