On Fri, Nov 26, 2021 at 5:40 PM Priyankar Jain <priyankar.j...@nutanix.com>
wrote:

> 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 <priyankar.j...@nutanix.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>

thanks

---
>  backends/dbus-vmstate.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/backends/dbus-vmstate.c b/backends/dbus-vmstate.c
> index 9cfd758c42..57369ec0f2 100644
> --- a/backends/dbus-vmstate.c
> +++ b/backends/dbus-vmstate.c
> @@ -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);
> --
> 2.30.1 (Apple Git-130)
>
>
>

-- 
Marc-André Lureau

Reply via email to