diff options
author | Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> | 2012-01-06 16:57:44 +0000 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> | 2012-01-13 10:36:59 +0000 |
commit | 8d98734651a8a601980b6e57788f2ed6a4ea620a (patch) | |
tree | cb8c74cd622d5815df0565d4e50091af0ed58096 /block/vvfat.c | |
parent | dabdf394258aaa040fa0e754d6d05d7833542033 (diff) | |
download | qemu-8d98734651a8a601980b6e57788f2ed6a4ea620a.zip |
vvfat: avoid leaking file descriptor in commit_one_file()
Reported-by: Dr David Alan Gilbert <davidagilbert@uk.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Diffstat (limited to 'block/vvfat.c')
-rw-r--r-- | block/vvfat.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/block/vvfat.c b/block/vvfat.c index eeffc4a4a8..9ef21ddfc5 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -2218,6 +2218,7 @@ static int commit_one_file(BDRVVVFATState* s, } if (offset > 0) { if (lseek(fd, offset, SEEK_SET) != offset) { + close(fd); g_free(cluster); return -3; } @@ -2238,11 +2239,13 @@ static int commit_one_file(BDRVVVFATState* s, (uint8_t*)cluster, (rest_size + 0x1ff) / 0x200); if (ret < 0) { + close(fd); g_free(cluster); return ret; } if (write(fd, cluster, rest_size) < 0) { + close(fd); g_free(cluster); return -2; } |