From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:46142) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RNLTz-0001Vk-N2 for qemu-devel@nongnu.org; Mon, 07 Nov 2011 04:27:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RNLTx-0002CH-Of for qemu-devel@nongnu.org; Mon, 07 Nov 2011 04:27:11 -0500 Received: from mtagate7.uk.ibm.com ([194.196.100.167]:48596) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RNLTx-0002Br-G4 for qemu-devel@nongnu.org; Mon, 07 Nov 2011 04:27:09 -0500 Received: from d06nrmr1307.portsmouth.uk.ibm.com (d06nrmr1307.portsmouth.uk.ibm.com [9.149.38.129]) by mtagate7.uk.ibm.com (8.13.1/8.13.1) with ESMTP id pA79R8jW013323 for ; Mon, 7 Nov 2011 09:27:08 GMT Received: from d06av04.portsmouth.uk.ibm.com (d06av04.portsmouth.uk.ibm.com [9.149.37.216]) by d06nrmr1307.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pA79R7xo2469912 for ; Mon, 7 Nov 2011 09:27:08 GMT Received: from d06av04.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av04.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pA79R68p006983 for ; Mon, 7 Nov 2011 02:27:06 -0700 From: Stefan Hajnoczi Date: Mon, 7 Nov 2011 09:26:58 +0000 Message-Id: <1320658020-4374-4-git-send-email-stefanha@linux.vnet.ibm.com> In-Reply-To: <1320658020-4374-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1320658020-4374-1-git-send-email-stefanha@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 3/5] cmd: Fix potential memory leak List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Anthony Liguori , Stefan Hajnoczi , Pavel Borzenkov From: Pavel Borzenkov Signed-off-by: Pavel Borzenkov Signed-off-by: Stefan Hajnoczi --- cmd.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cmd.c b/cmd.c index 75415d8..0806e18 100644 --- a/cmd.c +++ b/cmd.c @@ -329,16 +329,21 @@ char **breakline(char *input, int *count) int c = 0; char *p; char **rval = calloc(sizeof(char *), 1); + char **tmp; while (rval && (p = qemu_strsep(&input, " ")) != NULL) { if (!*p) { continue; } c++; - rval = realloc(rval, sizeof(*rval) * (c + 1)); - if (!rval) { + tmp = realloc(rval, sizeof(*rval) * (c + 1)); + if (!tmp) { + free(rval); + rval = NULL; c = 0; break; + } else { + rval = tmp; } rval[c - 1] = p; rval[c] = NULL; -- 1.7.7.1