Heap Functions Security Checks
unlink
Daha fazla bilgi için kontrol edin:
unlinkBu, yapılan kontrollerin özeti:
Belirtilen blok boyutunun, bir sonraki blokta belirtilen
prev_size
ile aynı olup olmadığını kontrol edinHata mesajı:
corrupted size vs. prev_size
Ayrıca
P->fd->bk == P
veP->bk->fw == P
olduğundan emin olunHata mesajı:
corrupted double-linked list
Blok küçük değilse,
P->fd_nextsize->bk_nextsize == P
veP->bk_nextsize->fd_nextsize == P
olduğundan emin olunHata mesajı:
corrupted double-linked list (not small)
_int_malloc
Daha fazla bilgi için kontrol edin:
malloc & sysmallocHızlı blok araması sırasında yapılan kontroller:
Blok hizalanmamışsa:
Hata mesajı:
malloc(): unaligned fastbin chunk detected 2
İleri blok hizalanmamışsa:
Hata mesajı:
malloc(): unaligned fastbin chunk detected
Döndürülen bloğun boyutu, hızlı blok içindeki dizine göre doğru değilse:
Hata mesajı:
malloc(): memory corruption (fast)
Tcache'i doldurmak için kullanılan herhangi bir blok hizalanmamışsa:
Hata mesajı:
malloc(): unaligned fastbin chunk detected 3
Küçük blok araması sırasında yapılan kontroller:
victim->bk->fd != victim
ise:Hata mesajı:
malloc(): smallbin double linked list corrupted
Konsolidasyon sırasında yapılan kontroller her hızlı blok bloğu için gerçekleştirilir:
Blok hizalanmamışsa tetikleyin:
Hata mesajı:
malloc_consolidate(): unaligned fastbin chunk detected
Bloğun, içinde bulunduğu dizine göre farklı bir boyutta olması durumunda:
Hata mesajı:
malloc_consolidate(): invalid chunk size
Önceki blok kullanımda değilse ve önceki bloğun boyutu prev_chunk tarafından belirtilen boyuttan farklıysa:
Hata mesajı:
corrupted size vs. prev_size in fastbins
Karışık blok araması sırasında yapılan kontroller:
Blok boyutu garipse (çok küçük veya çok büyük):
Hata mesajı:
malloc(): invalid size (unsorted)
Sonraki blok boyutu garipse (çok küçük veya çok büyük):
Hata mesajı:
malloc(): invalid next size (unsorted)
Bir sonraki bloğun belirttiği önceki boyut, bloğun boyutundan farklıysa:
Hata mesajı:
malloc(): mismatching next->prev_size (unsorted)
Eğer
victim->bck->fd == victim
değilse veyavictim->fd == av (arena)
değilse:Hata mesajı:
malloc(): unsorted double linked list corrupted
Her zaman sonuncusunu kontrol ettiğimizden, fd'sinin her zaman arena yapısına işaret etmesi gerekir.
Bir sonraki blok, öncekinin kullanımda olduğunu belirtmiyorsa:
Hata mesajı:
malloc(): invalid next->prev_inuse (unsorted)
fwd->bk_nextsize->fd_nextsize != fwd
ise:Hata mesajı:
malloc(): largebin double linked list corrupted (nextsize)
fwd->bk->fd != fwd
ise:Hata mesajı:
malloc(): largebin double linked list corrupted (bk)
Büyük blok (dizinle) araması sırasında yapılan kontroller:
bck->fd-> bk != bck
ise:Hata mesajı:
malloc(): corrupted unsorted chunks
Büyük blok (bir sonraki büyük) araması sırasında yapılan kontroller:
bck->fd-> bk != bck
ise:Hata mesajı:
malloc(): corrupted unsorted chunks2
Üst blok kullanımı sırasında yapılan kontroller:
chunksize(av->top) > av->system_mem
ise:Hata mesajı:
malloc(): corrupted top size
tcache_get_n
tcache_get_n
tcache_get_n
içindeki kontroller:Blok hizalanmamışsa:
Hata mesajı:
malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
tcache_thread_shutdown
tcache_thread_shutdown
içindeki kontroller:Blok hizalanmamışsa:
Hata mesajı:
tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
__libc_realloc
__libc_realloc
içindeki kontroller:Eski işaretçi hizalanmamışsa veya boyut yanlışsa:
Hata mesajı:
realloc(): invalid pointer
_int_free
_int_free
Daha fazla bilgi için kontrol edin:
free_int_free
başlangıcındaki kontroller:İşaretçi hizalanmışsa:
Hata mesajı:
free(): invalid pointer
Boyut
MINSIZE
'dan büyükse ve boyut aynı zamanda hizalanmışsa:Hata mesajı:
free(): invalid size
_int_free
tcache içindeki kontroller:mp_.tcache_count
'dan fazla giriş varsa:Hata mesajı:
free(): too many chunks detected in tcache
Giriş hizalanmamışsa:
Hata mesajı:
free(): unaligned chunk detected in tcache 2
Serbest bırakılan blok zaten serbest bırakılmış ve tcache'te bir blok olarak mevcutsa:
Hata mesajı:
free(): double free detected in tcache 2
_int_free
hızlı blok içindeki kontroller:Blok boyutu geçersizse (çok büyük veya küçük) tetikleyin:
Hata mesajı:
free(): invalid next size (fast)
Eklenen blok zaten hızlı blok üstünde ise:
Hata mesajı:
double free or corruption (fasttop)
Üstteki bloğun boyutu, eklediğimiz bloğun boyutundan farklıysa:
Hata mesajı:
invalid fastbin entry (free)
_int_free_merge_chunk
_int_free_merge_chunk
_int_free_merge_chunk
içindeki kontroller:Eğer chunk en üst chunk ise:
Hata mesajı:
double free or corruption (top)
Eğer bir sonraki chunk arena sınırlarının dışında ise:
Hata mesajı:
double free or corruption (out)
Eğer chunk kullanılmamış olarak işaretlenmemişse (sonraki chunk'taki prev_inuse içinde):
Hata mesajı:
double free or corruption (!prev)
Eğer bir sonraki chunk'ın boyutu çok küçük veya çok büyük ise:
Hata mesajı:
free(): invalid next size (normal)
Eğer önceki chunk kullanılmıyorsa, birleştirmeye çalışacaktır. Ancak,
prev_size
önceki chunk'ta belirtilen boyuttan farklı ise:Hata mesajı:
corrupted size vs. prev_size while consolidating
_int_free_create_chunk
_int_free_create_chunk
_int_free_create_chunk
içindeki kontroller:Sırasız bin'e bir chunk eklerken,
unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
kontrol edilir:Hata mesajı:
free(): corrupted unsorted chunks
do_check_malloc_state
do_check_malloc_state
do_check_malloc_state
içindeki kontroller:Hatalı hızlı bin chunk'ı:
Hata mesajı:
do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
malloc_consolidate
malloc_consolidate
içindeki kontroller:Hatalı hızlı bin chunk'ı:
Hata mesajı:
malloc_consolidate(): unaligned fastbin chunk detected
Yanlış hızlı bin chunk boyutu:
Hata mesajı:
malloc_consolidate(): invalid chunk size
_int_realloc
_int_realloc
_int_realloc
içindeki kontroller:Boyut çok büyük veya çok küçük ise:
Hata mesajı:
realloc(): invalid old size
Bir sonraki chunk'ın boyutu çok büyük veya çok küçük ise:
Hata mesajı:
realloc(): invalid next size
Last updated