From dca44dea6644ef12b7285a4cf2732b4a6708aa5b Mon Sep 17 00:00:00 2001 From: Christopher Cerne Date: Wed, 31 Mar 2021 14:00:01 -0400 Subject: [PATCH] Fixed issue where we are not instrumenting load instructions --- mallocanalysis.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mallocanalysis.c b/mallocanalysis.c index 7e26302..7d2c55d 100644 --- a/mallocanalysis.c +++ b/mallocanalysis.c @@ -15,24 +15,36 @@ typedef void (*memory_analyzer_list_init_callback_t)(void *); /* Create typedef for the list callback */ typedef void (*memory_analyzer_list_integrity_callback_t)(void); +/* Create typedef for memory load detected */ +typedef void (*memory_load_detected_callback_t)(void *); + /* Function signatures */ void __memory_write_detected(void *, void *, long long, int, char *, char *); void __list_integrity_check(void); void __list_init_detected(void *); +void __memory_load_detected(void *); /* Create file-scope variables for our analyzer */ static bool __memory_analyzer_initialized = false; static memory_analyzer_callback_t __memory_analyzer_function_callback = NULL; static memory_analyzer_list_init_callback_t __memory_analyzer_list_callback = NULL; static memory_analyzer_list_integrity_callback_t __memory_analyzer_list_integrity_callback = NULL; +static memory_load_detected_callback_t __memory_load_detected_callback = NULL; -void initialize_memory_analyzer(memory_analyzer_callback_t callback, memory_analyzer_list_init_callback_t list_callback, memory_analyzer_list_integrity_callback_t list_integrity_callback) { +void initialize_memory_analyzer(memory_analyzer_callback_t callback, memory_analyzer_list_init_callback_t list_callback, memory_analyzer_list_integrity_callback_t list_integrity_callback, memory_load_detected_callback_t memory_load_callback) { __memory_analyzer_function_callback = callback; __memory_analyzer_list_callback = list_callback; __memory_analyzer_list_integrity_callback = list_integrity_callback; + __memory_load_detected_callback = memory_load_callback; __memory_analyzer_initialized = true; } +void __memory_load_detected(void * pointer) { + if (__memory_analyzer_initialized) { + __memory_load_detected_callback(pointer); + } +} + void __memory_write_detected(void * pointer, void * value, long long size, int line_number, char * filename, char * structname) { /* If the memory analyzer is initialized, create a function call to our callback */ if (__memory_analyzer_initialized) {