aboutsummaryrefslogtreecommitdiff
path: root/qom
diff options
context:
space:
mode:
authorGonglei <arei.gonglei@huawei.com>2014-09-27 13:13:56 +0800
committerAndreas Färber <afaerber@suse.de>2014-10-15 05:03:04 +0200
commit8ae9a9ef4e610a58d0748f5aa7dd144b08e09039 (patch)
treeb50d5fe4871f5403bafef851ac552da1f2cea608 /qom
parent3a53009fa044a554dbdeacf30a6b8ea3eb02fe63 (diff)
qom: Add error handler for object alias property
object_property_add_alias() is called at some places at present. And its parameter errp may not NULL, such as object_property_add_alias(obj, "iothread", OBJECT(&dev->vdev),"iothread", &error_abort); This patch add error handler for security. Cc: Stefan Hajnoczi <stefanha@redhat.com> Cc: Michael S. Tsirkin <mst@redhat.com> Cc: Markus Armbruster <armbru@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Gonglei <arei.gonglei@huawei.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'qom')
-rw-r--r--qom/object.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/qom/object.c b/qom/object.c
index 21135e1a08..575291f109 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -1642,6 +1642,7 @@ void object_property_add_alias(Object *obj, const char *name,
ObjectProperty *op;
ObjectProperty *target_prop;
gchar *prop_type;
+ Error *local_err = NULL;
target_prop = object_property_find(target_obj, target_name, errp);
if (!target_prop) {
@@ -1663,9 +1664,15 @@ void object_property_add_alias(Object *obj, const char *name,
property_get_alias,
property_set_alias,
property_release_alias,
- prop, errp);
+ prop, &local_err);
+ if (local_err) {
+ error_propagate(errp, local_err);
+ g_free(prop);
+ goto out;
+ }
op->resolve = property_resolve_alias;
+out:
g_free(prop_type);
}