mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-14 17:28:07 +00:00
fix memory poisoning for arenas allocated from an optional buffer
This commit is contained in:
@@ -37,8 +37,13 @@ arena_alloc_(ArenaParams *params)
|
|||||||
base = os_reserve(reserve_size);
|
base = os_reserve(reserve_size);
|
||||||
os_commit(base, commit_size);
|
os_commit(base, commit_size);
|
||||||
}
|
}
|
||||||
|
AsanPoisonMemoryRegion(base, commit_size);
|
||||||
raddbg_annotate_vaddr_range(base, reserve_size, "arena %s:%i", params->allocation_site_file, params->allocation_site_line);
|
raddbg_annotate_vaddr_range(base, reserve_size, "arena %s:%i", params->allocation_site_file, params->allocation_site_line);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AsanPoisonMemoryRegion(base, params->reserve_size);
|
||||||
|
}
|
||||||
|
|
||||||
// rjf: panic on arena creation failure
|
// rjf: panic on arena creation failure
|
||||||
#if OS_FEATURE_GRAPHICAL
|
#if OS_FEATURE_GRAPHICAL
|
||||||
@@ -50,6 +55,7 @@ arena_alloc_(ArenaParams *params)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// rjf: extract arena header & fill
|
// rjf: extract arena header & fill
|
||||||
|
AsanUnpoisonMemoryRegion(base, ARENA_HEADER_SIZE);
|
||||||
Arena *arena = (Arena *)base;
|
Arena *arena = (Arena *)base;
|
||||||
arena->current = arena;
|
arena->current = arena;
|
||||||
arena->flags = params->flags;
|
arena->flags = params->flags;
|
||||||
@@ -64,8 +70,6 @@ arena_alloc_(ArenaParams *params)
|
|||||||
#if ARENA_FREE_LIST
|
#if ARENA_FREE_LIST
|
||||||
arena->free_last = 0;
|
arena->free_last = 0;
|
||||||
#endif
|
#endif
|
||||||
AsanPoisonMemoryRegion(base, commit_size);
|
|
||||||
AsanUnpoisonMemoryRegion(base, ARENA_HEADER_SIZE);
|
|
||||||
return arena;
|
return arena;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,6 +165,7 @@ arena_push(Arena *arena, U64 size, U64 align, B32 zero)
|
|||||||
{
|
{
|
||||||
os_commit(cmt_ptr, cmt_size);
|
os_commit(cmt_ptr, cmt_size);
|
||||||
}
|
}
|
||||||
|
AsanPoisonMemoryRegion(cmt_ptr, cmt_size);
|
||||||
current->cmt = cmt_pst_clamped;
|
current->cmt = cmt_pst_clamped;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user