Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Überblick
Die Überprüfung auf einen Überlauf einer Ergänzung durch Vergleich mit einem der Argumente der Addition schlägt fehl, wenn die Größe aller Argumenttypen kleiner als 4 Byte ist. Dies liegt daran, dass das Ergebnis der Addition zu einem 4-Byte-Integer konvertiert wird.
Empfehlung
Überprüfen Sie den Überlauf, indem Sie die Addition mit einem Wert vergleichen, der mindestens 4 Byte beträgt.
Beispiel
In diesem Beispiel führt das Ergebnis des Vergleichs zu einem ganzzahligen Überlauf:
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;
}
Um den Fehler zu beheben, überprüfen Sie den Überlauf, indem Sie die Addition mit einem Wert vergleichen, der mindestens 4 Byte beträgt:
unsigned short CheckForInt16OverflowCorrectCode(unsigned short v, unsigned short b)
{
if (v + b > 0x00FFFF)
{
// ... do something
}
return v + b;
}
Zusätzliche Details
Diese Abfrage finden Sie im Microsoft GitHub CodeQL-Repository. Details dazu, wie Windows-Treiberentwickler CodeQL herunterladen und ausführen können, finden Sie auf der Seite " CodeQL" und auf der Seite "Logotest für statische Tools ".