Message ID | 20200225155618.133412-1-mreitz@redhat.com |
---|---|
State | New |
Headers | show |
Series | block: Fix leak in bdrv_create_file_fallback() | expand |
Am 25.02.2020 um 16:56 hat Max Reitz geschrieben: > @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 <mreitz@redhat.com> Thanks, applied to the block branch. Kevin
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,
@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 <mreitz@redhat.com> --- block.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)