qemu-config: fix memory leak on ferror()

The leak is basically impossible to reach, since the only common way
to get ferror(fp) is by passing a directory to -readconfig.  In that
case, the error occurs before qdict is set to anything non-NULL.
However, it's theoretically possible to get there after an EIO.

Cc: armbru@redhat.com
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Fixes: f7544edcd3 ("qemu-config: add error propagation to qemu_config_parse", 2021-03-06)
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2021-07-05 19:14:37 +02:00
parent e72f9524fe
commit 461fea9bf1

View File

@ -414,7 +414,7 @@ static int qemu_config_foreach(FILE *fp, QEMUConfigCB *cb, void *opaque,
if (ferror(fp)) { if (ferror(fp)) {
loc_pop(&loc); loc_pop(&loc);
error_setg_errno(errp, errno, "Cannot read config file"); error_setg_errno(errp, errno, "Cannot read config file");
return res; goto out_no_loc;
} }
res = count; res = count;
if (qdict) { if (qdict) {
@ -422,6 +422,7 @@ static int qemu_config_foreach(FILE *fp, QEMUConfigCB *cb, void *opaque,
} }
out: out:
loc_pop(&loc); loc_pop(&loc);
out_no_loc:
qobject_unref(qdict); qobject_unref(qdict);
return res; return res;
} }