Fallos del tipo CWE-469

1 resultado

Uso de subtração de ponteiros para determinar tamanho

Fraqueza em que o código calcula o tamanho de um buffer ou array subtraindo dois ponteiros, sem validar se eles apontam para a mesma alocação ou se a operação resulta em um valor negativo/inválido. Isso pode levar a leituras fora dos limites, corrupção de memória ou crashes.

Ejemplo

Um programa recebe dois ponteiros de entrada e calcula `size = ptr_end - ptr_start` para definir quantos bytes copiar, mas não verifica se ptr_start e ptr_end realmente pertencem ao mesmo bloco de memória ou se ptr_end < ptr_start, resultando em overflow ou leitura além do esperado.

Cómo mitigar

Sempre valide ponteiros antes de operações aritméticas: verifique se ambos pertencem à mesma região alocada, se a subtração resulta em valor positivo e menor que o esperado, e prefira usar APIs seguras (como `std::distance` em C++ ou funções de stride explícitas) ao invés de aritmética manual de ponteiros.