unlink
Codice
Spiegazione Grafica
Controlla questa ottima spiegazione grafica del processo unlink:
Controlli di Sicurezza
Controlla se la dimensione indicata del chunk è la stessa del prev_size indicato nel chunk successivo
Controlla anche che
P->fd->bk == P
eP->bk->fw == P
Se il chunk non è piccolo, controlla che
P->fd_nextsize->bk_nextsize == P
eP->bk_nextsize->fd_nextsize == P
Leak
Un chunk non collegato non pulisce gli indirizzi allocati, quindi avendo accesso a rad it, è possibile leak alcuni indirizzi interessanti:
Libc Leaks:
Se P si trova nella testa della lista doppiamente collegata,
bk
punterà amalloc_state
in libcSe P si trova alla fine della lista doppiamente collegata,
fd
punterà amalloc_state
in libcQuando la lista doppiamente collegata contiene solo un chunk libero, P è nella lista doppiamente collegata, e sia
fd
chebk
possono leak l'indirizzo all'interno dimalloc_state
.
Heap leaks:
Se P si trova nella testa della lista doppiamente collegata,
fd
punterà a un chunk disponibile nell'heapSe P si trova alla fine della lista doppiamente collegata,
bk
punterà a un chunk disponibile nell'heapSe P è nella lista doppiamente collegata, sia
fd
chebk
punteranno a un chunk disponibile nell'heap
Last updated