mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-18 21:19:31 +03:00
enforce first null byte in CANARY
+ added MI_CANARY_MASK to enforce the LSB is 0
This commit is contained in:
parent
3cba10e510
commit
eaafec4461
2 changed files with 2 additions and 1 deletions
|
@ -472,6 +472,7 @@ typedef struct mi_padding_s {
|
||||||
uint32_t canary; // encoded block value to check validity of the padding (in case of overflow)
|
uint32_t canary; // encoded block value to check validity of the padding (in case of overflow)
|
||||||
uint32_t delta; // padding bytes before the block. (mi_usable_size(p) - delta == exact allocated bytes)
|
uint32_t delta; // padding bytes before the block. (mi_usable_size(p) - delta == exact allocated bytes)
|
||||||
} mi_padding_t;
|
} mi_padding_t;
|
||||||
|
#define MI_CANARY_MASK (0xffffff00)
|
||||||
#define MI_PADDING_SIZE (sizeof(mi_padding_t))
|
#define MI_PADDING_SIZE (sizeof(mi_padding_t))
|
||||||
#define MI_PADDING_WSIZE ((MI_PADDING_SIZE + MI_INTPTR_SIZE - 1) / MI_INTPTR_SIZE)
|
#define MI_PADDING_WSIZE ((MI_PADDING_SIZE + MI_INTPTR_SIZE - 1) / MI_INTPTR_SIZE)
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -99,7 +99,7 @@ extern inline void* _mi_page_malloc_zero(mi_heap_t* heap, mi_page_t* page, size_
|
||||||
mi_assert_internal(delta >= 0 && mi_page_usable_block_size(page) >= (size - MI_PADDING_SIZE + delta));
|
mi_assert_internal(delta >= 0 && mi_page_usable_block_size(page) >= (size - MI_PADDING_SIZE + delta));
|
||||||
#endif
|
#endif
|
||||||
mi_track_mem_defined(padding,sizeof(mi_padding_t)); // note: re-enable since mi_page_usable_block_size may set noaccess
|
mi_track_mem_defined(padding,sizeof(mi_padding_t)); // note: re-enable since mi_page_usable_block_size may set noaccess
|
||||||
padding->canary = (uint32_t)(mi_ptr_encode(page,block,page->keys));
|
padding->canary = (uint32_t)(mi_ptr_encode(page,block,page->keys)) & MI_CANARY_MASK;
|
||||||
padding->delta = (uint32_t)(delta);
|
padding->delta = (uint32_t)(delta);
|
||||||
#if MI_PADDING_CHECK
|
#if MI_PADDING_CHECK
|
||||||
if (!mi_page_is_huge(page)) {
|
if (!mi_page_is_huge(page)) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue