33 namespace memory_validator {
139 void*
data()
const {
return ptr_; }
140 size_t size()
const {
return size_; }
146 std::vector<uint8_t> original_canaries_;
147 bool canaries_initialized_;
149 void initialize_canaries();
150 bool validate_canaries()
const;
Memory pattern generator for testing.
static bool validate_pattern(const void *ptr, size_t size, uint8_t expected_seed=0xAA)
static std::vector< uint8_t > generate_random_pattern(size_t size)
static std::vector< uint8_t > generate_pattern(size_t size, uint8_t seed=0xAA)
RAII wrapper for memory validation.
MemoryValidator(MemoryValidator &&)=delete
MemoryValidator(const MemoryValidator &)=delete
void check_bounds() const
MemoryValidator & operator=(const MemoryValidator &)=delete
MemoryValidator & operator=(MemoryValidator &&)=delete
MemoryValidator(void *ptr, size_t size, size_t canary_size=8)
bool is_double_free(void *ptr)
Check for double-free conditions.
void safe_memcpy_validated(void *dest, const void *src, size_t size)
Safe memory copy with comprehensive validation.
bool validate_canary_bytes(const void *ptr, size_t size, size_t canary_size=8)
Validate canary bytes around buffer.
bool check_buffer_bounds(const void *ptr, size_t size, size_t canary_size=8)
Check for buffer overflow/underflow patterns.
bool is_memory_accessible(const void *ptr, size_t size)
Validate memory region accessibility.
bool is_memory_aligned(const void *ptr, size_t alignment)
Validate memory alignment.
bool is_use_after_free(const void *ptr)
Check for use-after-free conditions.
void safe_memset_validated(void *ptr, int value, size_t size)
Safe memory set with comprehensive validation.
void initialize_canary_bytes(void *ptr, size_t size, size_t canary_size=8)
Initialize canary bytes around buffer.
void safe_memmove_validated(void *dest, const void *src, size_t size)
Safe memory move with comprehensive validation.