Heap Functions Security Checks
unlink
Für weitere Informationen siehe:
unlinkDies ist eine Zusammenfassung der durchgeführten Überprüfungen:
Überprüfen Sie, ob die angegebene Größe des Chunks mit der im nächsten Chunk angegebenen
prev_size
übereinstimmtFehlermeldung:
corrupted size vs. prev_size
Überprüfen Sie auch, ob
P->fd->bk == P
undP->bk->fw == P
Fehlermeldung:
corrupted double-linked list
Wenn der Chunk nicht klein ist, überprüfen Sie, ob
P->fd_nextsize->bk_nextsize == P
undP->bk_nextsize->fd_nextsize == P
Fehlermeldung:
corrupted double-linked list (not small)
_int_malloc
Für weitere Informationen siehe:
malloc & sysmallocÜberprüfungen während der Suche im Fast Bin:
Wenn der Chunk nicht ausgerichtet ist:
Fehlermeldung:
malloc(): unaligned fastbin chunk detected 2
Wenn der vorwärts liegende Chunk nicht ausgerichtet ist:
Fehlermeldung:
malloc(): unaligned fastbin chunk detected
Wenn der zurückgegebene Chunk eine Größe hat, die aufgrund seines Index im Fast Bin nicht korrekt ist:
Fehlermeldung:
malloc(): memory corruption (fast)
Wenn ein beliebiger Chunk, der verwendet wird, um den Tcache zu füllen, nicht ausgerichtet ist:
Fehlermeldung:
malloc(): unaligned fastbin chunk detected 3
Überprüfungen während der Suche im Small Bin:
Wenn
victim->bk->fd != victim
:Fehlermeldung:
malloc(): smallbin double linked list corrupted
Überprüfungen während der Konsolidierung für jeden Fast Bin Chunk durchgeführt:
Wenn der Chunk nicht ausgerichtet ist, auslösen:
Fehlermeldung:
malloc_consolidate(): unaligned fastbin chunk detected
Wenn der Chunk eine andere Größe hat als die, die er aufgrund des Index haben sollte:
Fehlermeldung:
malloc_consolidate(): invalid chunk size
Wenn der vorherige Chunk nicht verwendet wird und der vorherige Chunk eine Größe hat, die von prev_chunk angegeben ist, abweicht:
Fehlermeldung:
corrupted size vs. prev_size in fastbins
Überprüfungen während der Suche im Unsorted Bin:
Wenn die Chunkgröße seltsam ist (zu klein oder zu groß):
Fehlermeldung:
malloc(): invalid size (unsorted)
Wenn die Größe des nächsten Chunks seltsam ist (zu klein oder zu groß):
Fehlermeldung:
malloc(): invalid next size (unsorted)
Wenn die vom nächsten Chunk angegebene vorherige Größe von der Größe des Chunks abweicht:
Fehlermeldung:
malloc(): mismatching next->prev_size (unsorted)
Wenn nicht
victim->bck->fd == victim
oder nichtvictim->fd == av (arena)
:Fehlermeldung:
malloc(): unsorted double linked list corrupted
Da wir immer den letzten überprüfen, sollte sein fd immer auf die Arena-Struktur zeigen.
Wenn der nächste Chunk nicht angibt, dass der vorherige in Benutzung ist:
Fehlermeldung:
malloc(): invalid next->prev_inuse (unsorted)
Wenn
fwd->bk_nextsize->fd_nextsize != fwd
:Fehlermeldung:
malloc(): largebin double linked list corrupted (nextsize)
Wenn
fwd->bk->fd != fwd
:Fehlermeldung:
malloc(): largebin double linked list corrupted (bk)
Überprüfungen während der Suche im Large Bin (nach Index):
bck->fd-> bk != bck
:Fehlermeldung:
malloc(): corrupted unsorted chunks
Überprüfungen während der Suche im Large Bin (nächstes Größeres):
bck->fd-> bk != bck
:Fehlermeldung:
malloc(): corrupted unsorted chunks2
Überprüfungen während der Verwendung des Top-Chunks:
chunksize(av->top) > av->system_mem
:Fehlermeldung:
malloc(): corrupted top size
tcache_get_n
tcache_get_n
Überprüfungen in
tcache_get_n
:Wenn der Chunk nicht ausgerichtet ist:
Fehlermeldung:
malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
tcache_thread_shutdown
Überprüfungen in
tcache_thread_shutdown
:Wenn der Chunk nicht ausgerichtet ist:
Fehlermeldung:
tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
__libc_realloc
Überprüfungen in
__libc_realloc
:Wenn der alte Zeiger nicht ausgerichtet ist oder die Größe inkorrekt war:
Fehlermeldung:
realloc(): invalid pointer
_int_free
_int_free
Für weitere Informationen siehe:
freeÜberprüfungen zu Beginn von
_int_free
:Zeiger ist ausgerichtet:
Fehlermeldung:
free(): invalid pointer
Größe größer als
MINSIZE
und Größe ebenfalls ausgerichtet:Fehlermeldung:
free(): invalid size
Überprüfungen im
_int_free
Tcache:Wenn es mehr Einträge gibt als
mp_.tcache_count
:Fehlermeldung:
free(): too many chunks detected in tcache
Wenn der Eintrag nicht ausgerichtet ist:
Fehlermeldung:
free(): unaligned chunk detected in tcache 2
Wenn der freigegebene Chunk bereits freigegeben wurde und als Chunk im Tcache vorhanden ist:
Fehlermeldung:
free(): double free detected in tcache 2
Überprüfungen im
_int_free
Fast Bin:Wenn die Größe des Chunks ungültig ist (zu groß oder zu klein) auslösen:
Fehlermeldung:
free(): invalid next size (fast)
Wenn der hinzugefügte Chunk bereits oben im Fast Bin war:
Fehlermeldung:
double free or corruption (fasttop)
Wenn die Größe des Chunks oben eine andere Größe als der hinzugefügte Chunk hat:
Fehlermeldung:
invalid fastbin entry (free)
_int_free_merge_chunk
_int_free_merge_chunk
Überprüfungen in
_int_free_merge_chunk
:Wenn der Chunk der oberste Chunk ist:
Fehlermeldung:
double free or corruption (top)
Wenn der nächste Chunk außerhalb der Grenzen der Arena liegt:
Fehlermeldung:
double free or corruption (out)
Wenn der Chunk nicht als verwendet markiert ist (im prev_inuse des folgenden Chunks):
Fehlermeldung:
double free or corruption (!prev)
Wenn der nächste Chunk eine zu kleine oder zu große Größe hat:
Fehlermeldung:
free(): invalid next size (normal)
Wenn der vorherige Chunk nicht in Benutzung ist, wird versucht zu konsolidieren. Aber, wenn sich die
prev_size
von der im vorherigen Chunk angegebenen Größe unterscheidet:Fehlermeldung:
corrupted size vs. prev_size while consolidating
_int_free_create_chunk
_int_free_create_chunk
Überprüfungen in
_int_free_create_chunk
:Beim Hinzufügen eines Chunks in den unsortierten Bin wird überprüft, ob
unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
:Fehlermeldung:
free(): corrupted unsorted chunks
do_check_malloc_state
do_check_malloc_state
Überprüfungen in
do_check_malloc_state
:Bei falsch ausgerichtetem Fast Bin Chunk:
Fehlermeldung:
do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
malloc_consolidate
Überprüfungen in
malloc_consolidate
:Bei falsch ausgerichtetem Fast Bin Chunk:
Fehlermeldung:
malloc_consolidate(): unaligned fastbin chunk detected
Bei falscher Größe des Fast Bin Chunks:
Fehlermeldung:
malloc_consolidate(): invalid chunk size
_int_realloc
_int_realloc
Überprüfungen in
_int_realloc
:Größe ist zu groß oder zu klein:
Fehlermeldung:
realloc(): invalid old size
Größe des nächsten Chunks ist zu groß oder zu klein:
Fehlermeldung:
realloc(): invalid next size
Last updated