unlink
Código
Explicação Gráfica
Confira esta ótima explicação gráfica do processo unlink:
Verificações de Segurança
Verifique se o tamanho indicado do chunk é o mesmo que o prev_size indicado no próximo chunk
Verifique também se
P->fd->bk == P
eP->bk->fw == P
Se o chunk não for pequeno, verifique se
P->fd_nextsize->bk_nextsize == P
eP->bk_nextsize->fd_nextsize == P
Vazamentos
Um chunk não vinculado não limpa os endereços alocados, então tendo acesso a ele, é possível vazar alguns endereços interessantes:
Vazamentos de Libc:
Se P estiver localizado na cabeça da lista duplamente encadeada,
bk
estará apontando paramalloc_state
na libcSe P estiver localizado no final da lista duplamente encadeada,
fd
estará apontando paramalloc_state
na libcQuando a lista duplamente encadeada contém apenas um chunk livre, P está na lista duplamente encadeada, e tanto
fd
quantobk
podem vazar o endereço dentro demalloc_state
.
Vazamentos de Heap:
Se P estiver localizado na cabeça da lista duplamente encadeada,
fd
estará apontando para um chunk disponível no heapSe P estiver localizado no final da lista duplamente encadeada,
bk
estará apontando para um chunk disponível no heapSe P estiver na lista duplamente encadeada, tanto
fd
quantobk
estarão apontando para um chunk disponível no heap
Last updated