unlink
Kod
Grafičko objašnjenje
Proverite ovaj sjajan grafički prikaz procesa unlinkovanja:
Bezbednosne provere
Proverite da li je naznačena veličina bloka ista kao i prev_size naznačena u sledećem bloku
Takođe proverite da li važi
P->fd->bk == P
iP->bk->fw == P
Ako blok nije mali, proverite da li važi
P->fd_nextsize->bk_nextsize == P
iP->bk_nextsize->fd_nextsize == P
Curenja
Unlinkovan blok ne čisti alocirane adrese, pa je moguće iscureti neke zanimljive adrese:
Curenja iz libc-a:
Ako je P smešten na početku dvostruko povezane liste,
bk
će pokazivati namalloc_state
u libc-uAko je P smešten na kraju dvostruko povezane liste,
fd
će pokazivati namalloc_state
u libc-uKada dvostruko povezana lista sadrži samo jedan slobodan blok, P je u dvostruko povezanoj listi, i kako
fd
tako ibk
mogu iscureti adresu unutarmalloc_state
.
Curenja iz heap-a:
Ako je P smešten na početku dvostruko povezane liste,
fd
će pokazivati na dostupan blok u heap-uAko je P smešten na kraju dvostruko povezane liste,
bk
će pokazivati na dostupan blok u heap-uAko je P u dvostruko povezanoj listi, kako
fd
tako ibk
će pokazivati na dostupan blok u heap-u
Last updated