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:
parent
e72f9524fe
commit
461fea9bf1
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user