Skip to content

Commit 2aee53b

Browse files
committed
add guard in _mi_page_ptr_unalign to prevent division by zero
1 parent 5dfa174 commit 2aee53b

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

src/free.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,18 @@ mi_block_t* _mi_page_ptr_unalign(const mi_page_t* page, const void* p) {
6161
mi_assert_internal(page!=NULL && p!=NULL);
6262

6363
size_t diff = (uint8_t*)p - page->page_start;
64-
size_t adjust;
64+
size_t adjust = 0;
6565
if mi_likely(page->block_size_shift != 0) {
6666
adjust = diff & (((size_t)1 << page->block_size_shift) - 1);
6767
}
6868
else {
69-
adjust = diff % mi_page_block_size(page);
69+
const size_t block_size = page->block_size;
70+
if mi_likely(block_size != 0) {
71+
adjust = diff % block_size;
72+
}
73+
else {
74+
_mi_error_message(EFAULT, "reading from invalid page, possibly corrupted meta-data (address=%p, page=%p)\n", p, page);
75+
}
7076
}
7177

7278
return (mi_block_t*)((uintptr_t)p - adjust);

0 commit comments

Comments
 (0)