unlink
Código
Explicação Gráfica
Confira esta ótima explicação gráfica do processo de unlink:
Verificações de Segurança
Verificar se o tamanho indicado do chunk é o mesmo que o prev_size indicado no próximo chunk
Verificar também se
P->fd->bk == P
eP->bk->fw == P
Se o chunk não for pequeno, verificar se
P->fd_nextsize->bk_nextsize == P
eP->bk_nextsize->fd_nextsize == P
Vazamentos
Um chunk desvinculado não limpa os endereços alocados, então, tendo acesso a ele, é possível vazar alguns endereços interessantes:
Vazamentos do Libc:
Se P estiver localizado no início da lista duplamente encadeada,
bk
apontará paramalloc_state
no libcSe P estiver localizado no final da lista duplamente encadeada,
fd
apontará paramalloc_state
no 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 do Heap:
Se P estiver localizado no início da lista duplamente encadeada,
fd
apontará para um chunk disponível no heapSe P estiver localizado no final da lista duplamente encadeada,
bk
apontará para um chunk disponível no heapSe P estiver na lista duplamente encadeada, tanto
fd
quantobk
apontarão para um chunk disponível no heap
Last updated