Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Overzicht
Controleren op een overloopprobleem bij een optelling door te vergelijken met een van de argumenten van de optelling mislukt als de grootte van de argumenttypen kleiner is dan 4 bytes. Dit komt doordat het resultaat van de toevoeging wordt gepromoveerd tot een 4 byte int.
Aanbeveling
Controleer de overloop door het resultaat van de optelling te vergelijken met een waarde van ten minste 4 bytes.
Voorbeeld
In dit voorbeeld resulteert het resultaat van de vergelijking in een overloop van gehele getallen:
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;
}
Als u de fout wilt oplossen, controleert u de overloop door de optelling te vergelijken met een waarde van ten minste 4 bytes.
unsigned short CheckForInt16OverflowCorrectCode(unsigned short v, unsigned short b)
{
if (v + b > 0x00FFFF)
{
// ... do something
}
return v + b;
}
Aanvullende details
Deze query vindt u in de Microsoft GitHub CodeQL-opslagplaats. Zie de pagina CodeQL en de pagina Logotest voor statische hulpprogramma's voor meer informatie over hoe ontwikkelaars van Windows-stuurprogramma's CodeQL kunnen downloaden en uitvoeren.