From: Gonglei <arei.gong...@huawei.com> Avoid the caller of object_property_print() leaking string argument's memory, such as qdev_print_props() when encounter errors.
Reviewed-by: Paolo Bonzini <pbonz...@redhat.com> Signed-off-by: Gonglei <arei.gong...@huawei.com> Signed-off-by: Andreas Färber <afaer...@suse.de> --- qom/object.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/qom/object.c b/qom/object.c index da0919a..21135e1 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1010,11 +1010,19 @@ char *object_property_print(Object *obj, const char *name, bool human, Error **errp) { StringOutputVisitor *mo; - char *string; + char *string = NULL; + Error *local_err = NULL; mo = string_output_visitor_new(human); - object_property_get(obj, string_output_get_visitor(mo), name, errp); + object_property_get(obj, string_output_get_visitor(mo), name, &local_err); + if (local_err) { + error_propagate(errp, local_err); + goto out; + } + string = string_output_get_string(mo); + +out: string_output_visitor_cleanup(mo); return string; } -- 1.8.4.5