From 45d9a3e1ab5a8273937c3f80704196446cf059b7 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Wed, 2 Dec 2020 19:27:32 +0900 Subject: [PATCH] Enable heap tracer and disallow free'ing unmanaged chunks Change-Id: If153dcbe74fc218c1c06228e14a10019dbaaf9b3 --- plugins/wakeup-manager/src/heap_tracer.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/wakeup-manager/src/heap_tracer.cpp b/plugins/wakeup-manager/src/heap_tracer.cpp index acf5bc6..fc24d84 100644 --- a/plugins/wakeup-manager/src/heap_tracer.cpp +++ b/plugins/wakeup-manager/src/heap_tracer.cpp @@ -18,7 +18,8 @@ const bool HEAP_TRACER_LOG_ENABLED = false ; #define DESCRIPTION_LENGTH 255 -//#define USE_HEAP_TRACER +#define USE_HEAP_TRACER +//#define ALLOW_FREE_UNMANAGED //#define RECORD_ALL_HISTORY void* vm_calloc(size_t nmemb, size_t size, const char *fmt, ...) @@ -60,14 +61,24 @@ void vm_free(void *ptr, const char *fmt, ...) va_list argptr; va_start(argptr, fmt); + bool managed = true; char description[DESCRIPTION_LENGTH]; vsnprintf(description, sizeof(description), fmt, argptr); if (false == _tracer.Delete(ptr, description)) { + managed = false; _tracer.Find(ptr); } - va_end(argptr); +#ifdef ALLOW_FREE_UNMANAGED + free(ptr); +#else + if (managed) { + free(ptr); + } #endif + va_end(argptr); +#else free(ptr); +#endif } else { LOGD("Trying to free a null pointer"); } -- 2.7.4