C · Intermediário · Inglês · Técnico
use after free
Erro de acessar um bloco do heap depois de ele ter sido liberado com free. A memória pode ter sido reaproveitada, o que corrompe dados ou abre brecha de segurança.
Onde usar
É comum quando duas estruturas guardam o mesmo ponteiro e uma delas libera o bloco. O AddressSanitizer detecta esse erro e informa onde foi o free.
Em código
char *s = malloc(4);
strcpy(s, "abc");
free(s);
puts(s); // use after freeExemplos
ASan reported a use after free in the cleanup path.
O ASan reportou um use after free no caminho de limpeza.
Two owners of the same pointer is how you get a use after free.
Dois donos do mesmo ponteiro é como se chega a um use after free.
Cuidado
Ler o valor logo depois do free e achar que está tudo certo porque "funcionou"; essa aparência de acerto é o perigo.
Sinônimos
UAF