diff options
author | Gonglei <arei.gonglei@huawei.com> | 2014-09-27 13:13:56 +0800 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2014-10-15 05:03:04 +0200 |
commit | 8ae9a9ef4e610a58d0748f5aa7dd144b08e09039 (patch) | |
tree | b50d5fe4871f5403bafef851ac552da1f2cea608 /qom/object.c | |
parent | 3a53009fa044a554dbdeacf30a6b8ea3eb02fe63 (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/object.c')
-rw-r--r-- | qom/object.c | 9 |
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); } |