Weaknesses of type CWE-469

1 result

Subtração de ponteiros para determinar tamanho

Ocorre quando o código usa subtração entre dois ponteiros para calcular o tamanho de um buffer ou estrutura de dados, sem validar se os ponteiros apontam para a mesma região de memória ou se a operação é válida. Isso pode resultar em cálculos incorretos de tamanho e levar a leitura ou escrita fora dos limites de memória.

Example

Um programa recebe dois ponteiros (início e fim de um array) e faz `tamanho = fim - inicio` para alocar memória ou processar dados. Se os ponteiros não estão no mesmo bloco alocado ou estão em ordem errada, o cálculo fica inválido e causa corrupção ou leitura de dados sensíveis.

How to mitigate

Mantenha o tamanho real do buffer em uma variável explícita, nunca derive por aritmética de ponteiros. Valide que ponteiros pertencem ao mesmo bloco de memória antes de operações de subtração, ou use bibliotecas de containers (STL, Go slices) que gerenciam tamanho internamente.