Changeset View
Changeset View
Standalone View
Standalone View
head/contrib/jemalloc/include/jemalloc/internal/safety_check.h
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
svn:keywords | null | FreeBSD=%H \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
#ifndef JEMALLOC_INTERNAL_SAFETY_CHECK_H | |||||
#define JEMALLOC_INTERNAL_SAFETY_CHECK_H | |||||
void safety_check_fail(const char *format, ...); | |||||
/* Can set to NULL for a default. */ | |||||
void safety_check_set_abort(void (*abort_fn)()); | |||||
JEMALLOC_ALWAYS_INLINE void | |||||
safety_check_set_redzone(void *ptr, size_t usize, size_t bumped_usize) { | |||||
assert(usize < bumped_usize); | |||||
for (size_t i = usize; i < bumped_usize && i < usize + 32; ++i) { | |||||
*((unsigned char *)ptr + i) = 0xBC; | |||||
} | |||||
} | |||||
JEMALLOC_ALWAYS_INLINE void | |||||
safety_check_verify_redzone(const void *ptr, size_t usize, size_t bumped_usize) | |||||
{ | |||||
for (size_t i = usize; i < bumped_usize && i < usize + 32; ++i) { | |||||
if (unlikely(*((unsigned char *)ptr + i) != 0xBC)) { | |||||
safety_check_fail("Use after free error\n"); | |||||
} | |||||
} | |||||
} | |||||
#endif /*JEMALLOC_INTERNAL_SAFETY_CHECK_H */ |