From eeea1faa099f82328f5831cf252f8ce0a59a9287 Mon Sep 17 00:00:00 2001 From: Max Reitz Date: Tue, 25 Feb 2020 16:56:18 +0100 Subject: [PATCH] block: Fix leak in bdrv_create_file_fallback() @options is leaked by the first two return statements in this function. Note that blk_new_open() takes the reference to @options even on failure, so all we need to do to fix the leak is to move the QDict allocation down to where we actually need it. Reported-by: Coverity (CID 1419884) Fixes: fd17146cd93d1704cd96d7c2757b325fc7aac6fd ("block: Generic file creation fallback") Signed-off-by: Max Reitz Message-Id: <20200225155618.133412-1-mreitz@redhat.com> Signed-off-by: Kevin Wolf --- block.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/block.c b/block.c index 1bdb9c679d..876bd45182 100644 --- a/block.c +++ b/block.c @@ -600,7 +600,7 @@ static int bdrv_create_file_fallback(const char *filename, BlockDriver *drv, QemuOpts *opts, Error **errp) { BlockBackend *blk; - QDict *options = qdict_new(); + QDict *options; int64_t size = 0; char *buf = NULL; PreallocMode prealloc; @@ -623,6 +623,7 @@ static int bdrv_create_file_fallback(const char *filename, BlockDriver *drv, return -ENOTSUP; } + options = qdict_new(); qdict_put_str(options, "driver", drv->format_name); blk = blk_new_open(filename, NULL, options,