From ffcedfab46a7b2fad9b309aa1930e14068d968aa Mon Sep 17 00:00:00 2001 From: Monty Date: Sun, 28 Jan 2018 15:54:17 +0200 Subject: Added TRASH_FREED_MEMORY compilation option One can use -DTRASH_FREED_MEMORY to enable TRASH macros. Useful to do when one suspects that there is accesses to freed memory. Extended my_free() to TRASH freed memory --- include/my_valgrind.h | 2 +- mysys/my_malloc.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/my_valgrind.h b/include/my_valgrind.h index dbbc4fad5ab..dd95098cc44 100644 --- a/include/my_valgrind.h +++ b/include/my_valgrind.h @@ -32,7 +32,7 @@ # define MEM_CHECK_DEFINED(a,len) ((void) 0) #endif /* HAVE_VALGRIND_MEMCHECK_H */ -#ifndef DBUG_OFF +#if !defined(DBUG_OFF) || defined(TRASH_FREED_MEMORY) #define TRASH_FILL(A,B,C) do { const size_t trash_tmp= (B); memset(A, C, trash_tmp); MEM_UNDEFINED(A, trash_tmp); } while (0) #else #define TRASH_FILL(A,B,C) do{ const size_t trash_tmp __attribute__((unused)) = (B) ; MEM_CHECK_ADDRESSABLE(A,trash_tmp);MEM_UNDEFINED(A,trash_tmp);} while (0) diff --git a/mysys/my_malloc.c b/mysys/my_malloc.c index 719c13a040e..2b34c89f5e4 100644 --- a/mysys/my_malloc.c +++ b/mysys/my_malloc.c @@ -214,6 +214,13 @@ void my_free(void *ptr) my_bool old_flags; old_size= MALLOC_SIZE_AND_FLAG(ptr, &old_flags); update_malloc_size(- (longlong) old_size - MALLOC_PREFIX_SIZE, old_flags); +#ifndef SAFEMALLOC + /* + Trash memory if not safemalloc. We don't have to do this if safemalloc + is used as safemalloc will also do trashing + */ + TRASH_FREE(ptr, old_size); +#endif sf_free(MALLOC_FIX_POINTER_FOR_FREE(ptr)); } DBUG_VOID_RETURN; -- cgit v1.2.1