sheepdog: Fix sd_co_create_opts() memory leaks
Both the option string for the 'redundancy' option and the SheepdogRedundancy object that is created accordingly could be leaked in error paths. This fixes the memory leaks. Reported by Coverity (CID 1390614 and 1390641). Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-id: 20180503153509.22223-1-kwolf@redhat.com Reviewed-by: Jeff Cody <jcody@redhat.com> Signed-off-by: Jeff Cody <jcody@redhat.com>
This commit is contained in:
parent
dc885fff97
commit
a2cb9239b7
|
@ -1987,6 +1987,7 @@ static SheepdogRedundancy *parse_redundancy_str(const char *opt)
|
||||||
} else {
|
} else {
|
||||||
ret = qemu_strtol(n2, NULL, 10, &parity);
|
ret = qemu_strtol(n2, NULL, 10, &parity);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
g_free(redundancy);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2183,7 +2184,7 @@ static int coroutine_fn sd_co_create_opts(const char *filename, QemuOpts *opts,
|
||||||
QDict *qdict, *location_qdict;
|
QDict *qdict, *location_qdict;
|
||||||
QObject *crumpled;
|
QObject *crumpled;
|
||||||
Visitor *v;
|
Visitor *v;
|
||||||
const char *redundancy;
|
char *redundancy;
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -2253,6 +2254,7 @@ static int coroutine_fn sd_co_create_opts(const char *filename, QemuOpts *opts,
|
||||||
fail:
|
fail:
|
||||||
qapi_free_BlockdevCreateOptions(create_options);
|
qapi_free_BlockdevCreateOptions(create_options);
|
||||||
qobject_unref(qdict);
|
qobject_unref(qdict);
|
||||||
|
g_free(redundancy);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue