Skip to content

Commit

Permalink
dbus-vmstate: Restrict error checks to registered proxies in dbus_get…
Browse files Browse the repository at this point in the history
…_proxies

The purpose of dbus_get_proxies to construct the proxies corresponding to the
IDs registered to dbus-vmstate.

Currenty, this function returns an error in case there is any failure
while instantiating proxy for "all" the names on dbus.

Ideally this function should error out only if it is not able to find and
validate the proxies registered to the backend otherwise any offending
process(for eg: the process purposefully may not export its Id property on
the dbus) may connect to the dbus and can lead to migration failures.

This commit ensures that dbus_get_proxies returns an error if it is not
able to find and validate the proxies of interest(the IDs registered
during the dbus-vmstate instantiation).

Signed-off-by: Priyankar Jain <[email protected]>
Reviewed-by: Marc-André Lureau <[email protected]>
Message-Id: <[email protected]>
  • Loading branch information
priyankar-jain authored and elmarco committed Aug 18, 2022
1 parent c7208a6 commit 2748583
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions backends/dbus-vmstate.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,14 +114,19 @@ dbus_get_proxies(DBusVMState *self, GError **err)
"org.qemu.VMState1",
NULL, err);
if (!proxy) {
return NULL;
if (err != NULL && *err != NULL) {
warn_report("%s: Failed to create proxy: %s",
__func__, (*err)->message);
g_clear_error(err);
}
continue;
}

result = g_dbus_proxy_get_cached_property(proxy, "Id");
if (!result) {
g_set_error_literal(err, G_IO_ERROR, G_IO_ERROR_FAILED,
"VMState Id property is missing.");
return NULL;
warn_report("%s: VMState Id property is missing.", __func__);
g_clear_object(&proxy);
continue;
}

id = g_variant_dup_string(result, &size);
Expand Down

0 comments on commit 2748583

Please sign in to comment.