unlink
Κώδικας
Γραφική Εξήγηση
Ελέγξτε αυτήν την εξαιρετική γραφική εξήγηση της διαδικασίας unlink:
Έλεγχοι Ασφαλείας
Ελέγξτε αν το υποδειγμένο μέγεθος του κομματιού είναι το ίδιο με το prev_size που υποδεικνύεται στο επόμενο κομμάτι
Ελέγξτε επίσης ότι
P->fd->bk == P
καιP->bk->fw == P
Αν το κομμάτι δεν είναι μικρό, ελέγξτε ότι
P->fd_nextsize->bk_nextsize == P
καιP->bk_nextsize->fd_nextsize == P
Διαρροές
Ένα αποσυνδεδεμένο κομμάτι δεν καθαρίζει τις εκχωρημένες διευθύνσεις, οπότε έχοντας πρόσβαση σε αυτό, είναι δυνατή η διαρροή ορισμένων ενδιαφερουσών διευθύνσεων:
Διαρροές Libc:
Αν το P βρίσκεται στην αρχή της διπλά συνδεδεμένης λίστας, το
bk
θα δείχνει στοmalloc_state
στο libcΑν το P βρίσκεται στο τέλος της διπλά συνδεδεμένης λίστας, το
fd
θα δείχνει στοmalloc_state
στο libcΌταν η διπλά συνδεδεμένη λίστα περιέχει μόνο ένα ελεύθερο κομμάτι, το P βρίσκεται στη διπλά συνδεδεμένη λίστα και τόσο το
fd
όσο και τοbk
μπορούν να διαρρεύσουν τη διεύθυνση μέσα στοmalloc_state
.
Διαρροές Heap:
Αν το P βρίσκεται στην αρχή της διπλά συνδεδεμένης λίστας, το
fd
θα δείχνει σε ένα διαθέσιμο κομμάτι στη στοίβαΑν το P βρίσκεται στο τέλος της διπλά συνδεδεμένης λίστας, το
bk
θα δείχνει σε ένα διαθέσιμο κομμάτι στη στοίβαΑν το P βρίσκεται στη διπλά συνδεδεμένη λίστα, τόσο το
fd
όσο και τοbk
θα δείχνουν σε ένα διαθέσιμο κομμάτι στη στοίβα
Last updated