Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
Verificar o estouro de uma adição comparando-se com um dos argumentos da adição falhará se o tamanho de todos os tipos de argumento for menor que 4 bytes. Isso ocorre porque o resultado da adição é promovido a um int de 4 bytes.
Recomendação
Verifique o overflow comparando a adição com um valor de pelo menos 4 bytes.
Exemplo
Neste exemplo, o resultado da comparação resultará em um overflow de inteiro.
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;
}
Para corrigir o bug, verifique o overflow comparando a soma com um valor de pelo menos 4 bytes:
unsigned short CheckForInt16OverflowCorrectCode(unsigned short v, unsigned short b)
{
if (v + b > 0x00FFFF)
{
// ... do something
}
return v + b;
}
Detalhes adicionais
Essa consulta pode ser encontrada no repositório CodeQL do Microsoft GitHub. Consulte a página CodeQL e o Teste do Logotipo das Ferramentas Estáticas para obter detalhes sobre como os desenvolvedores de Drivers do Windows podem baixar e executar o CodeQL.