Weaknesses of type CWE-469
1 resultSubtraçã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.
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.
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.