Fallos del tipo CWE-761

2 resultados

Liberação de ponteiro não apontando para o início do buffer

Ocorre quando o código tenta liberar um ponteiro que foi deslocado ou modificado, em vez de apontar para o endereço original alocado. Isso corrompe a estrutura interna do alocador de memória e causa undefined behavior, levando a crashes ou exploração.

Ejemplo

Um código aloca `char *buffer = malloc(100)`, depois incrementa com `buffer++` para iterar, e ao final chama `free(buffer)` — liberando um endereço que não é o original alocado, não o início do bloco.

Cómo mitigar

Mantenha uma cópia do ponteiro original antes de modificá-lo (ex: `char *original = buffer; buffer++; ... free(original);`), ou use um índice separado para iteração em vez de aritmética de ponteiros. Ferramentas como AddressSanitizer e Valgrind detectam esse padrão em testes.