From 544a7f7a36cb9434505fe5cdc9e79d16937ac23f Mon Sep 17 00:00:00 2001 From: Hong-Mei Li Date: Mon, 1 Apr 2013 11:24:44 +0800 Subject: [PATCH] libsysutils: fix null pointer and memory leak issue In SocketClient::quoteArg function 1. Fix potential null pointer accessing issue 2. Fix potential memory leak introduced by realloc fail Change-Id: I1ca0f9089290d43452e9a71428244545f4ed866b Signed-off-by: Hong-Mei Li --- libsysutils/src/SocketClient.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libsysutils/src/SocketClient.cpp b/libsysutils/src/SocketClient.cpp index 3d4984d3b..ae0e0770d 100644 --- a/libsysutils/src/SocketClient.cpp +++ b/libsysutils/src/SocketClient.cpp @@ -112,6 +112,12 @@ char *SocketClient::quoteArg(const char *arg) { char *result = (char *)malloc(len * 2 + 3); char *current = result; const char *end = arg + len; + char *oldresult; + + if(result == NULL) { + SLOGW("malloc error (%s)", strerror(errno)); + return NULL; + } *(current++) = '"'; while (arg < end) { @@ -125,8 +131,9 @@ char *SocketClient::quoteArg(const char *arg) { } *(current++) = '"'; *(current++) = '\0'; + oldresult = result; // save pointer in case realloc fails result = (char *)realloc(result, current-result); - return result; + return result ? result : oldresult; }