Partilhar via


Usando funções de inteiro seguro

Uma maneira de minimizar problemas de segurança é evitar estouros de inteiros e subfluxos. Estouros inteiros ocorrem quando o resultado de uma operação aritmética é maior que o espaço de memória do tipo de dados definido para recebê-lo. Isso resulta no truncamento do inteiro e em um resultado incorreto. Um subfluxo ocorre quando uma operação, geralmente subtração, fornece um resultado incorreto. A conversão entre dois tipos de dados também pode causar resultados incorretos devido ao truncamento de um resultado que não se ajusta ao novo espaço de memória.

A biblioteca ntintsafe fornece um conjunto de funções C que executam operações aritméticas de inteiros seguros com verificação de limites para evitar estouros e subfluxos no código do modo kernel. Essas funções correspondem às funções do Windows IntSafe usadas pelo código do aplicativo. Use essas funções para calcular um tamanho de índice ou buffer ou para calcular alguma outra forma de limites marcar. As funções são otimizadas para velocidade.

As funções de inteiro seguro oferecem as seguintes vantagens:

  • O tamanho do buffer de destino sempre é fornecido à função para garantir que a função não escreva após o final do buffer.

  • É garantido que os buffers sejam encerrados em nulo, mesmo que a operação trunque o resultado pretendido.

  • Todas as funções retornam um NTSTATUS, com apenas um código de êxito (STATUS_SUCCESS) possível e uma possível condição de erro (STATUS_INTEGER_OVERFLOW).

A biblioteca ntintsafe tem duas categorias de funções:

  • Funções de conversão – essas funções executam conversões entre dois tipos de dados.

  • Funções aritméticas – essas funções executam operações de adição, subtração e multiplicação para cada tipo de dados.

Resumo de Kernel-Mode funções de inteiro seguro

Importando Kernel-Mode funções de inteiro seguro