qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] qemu-io: Fix memory leak


From: Kevin Wolf
Subject: [Qemu-devel] [PATCH] qemu-io: Fix memory leak
Date: Wed, 18 Nov 2009 10:42:59 +0100

Signed-off-by: Kevin Wolf <address@hidden>
---
 qemu-io.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/qemu-io.c b/qemu-io.c
index cac72e9..c84b361 100644
--- a/qemu-io.c
+++ b/qemu-io.c
@@ -129,7 +129,8 @@ create_iovec(QEMUIOVector *qiov, char **argv, int nr_iov, 
int pattern)
 {
        size_t *sizes = calloc(nr_iov, sizeof(size_t));
        size_t count = 0;
-       void *buf, *p;
+       void *buf = NULL;
+       void *p;
        int i;
 
        for (i = 0; i < nr_iov; i++) {
@@ -139,19 +140,19 @@ create_iovec(QEMUIOVector *qiov, char **argv, int nr_iov, 
int pattern)
                len = cvtnum(arg);
                if (len < 0) {
                        printf("non-numeric length argument -- %s\n", arg);
-                       return NULL;
+                       goto fail;
                }
 
                /* should be SIZE_T_MAX, but that doesn't exist */
                if (len > UINT_MAX) {
                        printf("too large length argument -- %s\n", arg);
-                       return NULL;
+                       goto fail;
                }
 
                if (len & 0x1ff) {
                        printf("length argument %lld is not sector aligned\n",
                                len);
-                       return NULL;
+                       goto fail;
                }
 
                sizes[i] = len;
@@ -167,6 +168,7 @@ create_iovec(QEMUIOVector *qiov, char **argv, int nr_iov, 
int pattern)
                p += sizes[i];
        }
 
+fail:
        free(sizes);
        return buf;
 }
-- 
1.6.2.5





reply via email to

[Prev in Thread] Current Thread [Next in Thread]