OSDN Git Service

get_malloc_leak_info: Fix assumption that totalMemory out parameter was initialized...
authortedbo <tedbo@google.com>
Tue, 5 Oct 2010 20:06:06 +0000 (13:06 -0700)
committertedbo <tedbo@google.com>
Tue, 5 Oct 2010 20:23:28 +0000 (13:23 -0700)
The get_malloc_leak_info() currently asssumes that the totalMemory out parameter
was pre-initialized to zero before the routine is called. If it is not then the
accumulated totalMemory value will be incorrect. It is likely that many callers
will simply allocate totalMemory on the stack with no initialization and assume
that get_malloc_leak_info will set the proper value.

As an example, the caller in frameworks/base/core/jni/android_os_Debug.cpp
calls get_malloc_leak_info() with the address uninitiazed stack variable
for totalMemory. It is probably best to fix this in get_malloc_leak_info.

Change-Id: I84c927c3781419585794726115b7d34d8fdd24ae

libc/bionic/malloc_debug_common.c

index f05576c..ebf0006 100644 (file)
@@ -120,6 +120,7 @@ void get_malloc_leak_info(uint8_t** info, size_t* overallSize,
             totalMemory == NULL || backtraceSize == NULL) {
         return;
     }
+    *totalMemory = 0;
 
     pthread_mutex_lock(&gAllocationsMutex);
 
@@ -127,7 +128,6 @@ void get_malloc_leak_info(uint8_t** info, size_t* overallSize,
         *info = NULL;
         *overallSize = 0;
         *infoSize = 0;
-        *totalMemory = 0;
         *backtraceSize = 0;
         goto done;
     }