Re: [PATCH v4] usbredir: fix redirection of user-accesible device nodes.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey,

Looks good te me now.
Hans, would you mind taking a quick look at that
patch in case you have objections on the change (if
spice_usb_acl_helper_open_acl_finish() fails, try to directly open the
device node anyway as it may be user-accessible).

Thanks,

Christophe


On Wed, Jul 15, 2015 at 10:07:37AM +0100, Michal Suchanek wrote:
> When calling ACL helper fails also try to open the device node directly.
> 
> Otherwise user-accessible device nodes are rejected when policykit
> support is compiled in and policy is not set up when in fact the device
> could be accessed.
> 
> Signed-off-by: Michal Suchanek <hramrach@xxxxxxxxx>
> 
> --
> 
> v2:
> 
>  - clear errors properly
> 
> v4:
> 
>  - handle connection cancellation
> ---
>  src/channel-usbredir.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/src/channel-usbredir.c b/src/channel-usbredir.c
> index 292b82f..c6f9e5e 100644
> --- a/src/channel-usbredir.c
> +++ b/src/channel-usbredir.c
> @@ -276,13 +276,14 @@ static void spice_usbredir_channel_open_acl_cb(
>      SpiceUsbredirChannel *channel = SPICE_USBREDIR_CHANNEL(user_data);
>      SpiceUsbredirChannelPrivate *priv = channel->priv;
>      GError *err = NULL;
> +    GError *acl_err = NULL;
>  
>      g_return_if_fail(acl_helper == priv->acl_helper);
>      g_return_if_fail(priv->state == STATE_WAITING_FOR_ACL_HELPER ||
>                       priv->state == STATE_DISCONNECTING);
>  
> -    spice_usb_acl_helper_open_acl_finish(acl_helper, acl_res, &err);
> -    if (!err && priv->state == STATE_DISCONNECTING) {
> +    spice_usb_acl_helper_open_acl_finish(acl_helper, acl_res, &acl_err);
> +    if (priv->state == STATE_DISCONNECTING) {
>          err = g_error_new_literal(G_IO_ERROR, G_IO_ERROR_CANCELLED,
>                                    "USB redirection channel connect cancelled");
>      }
> @@ -290,13 +291,21 @@ static void spice_usbredir_channel_open_acl_cb(
>          spice_usbredir_channel_open_device(channel, &err);
>      }
>      if (err) {
> -        g_simple_async_result_take_error(priv->result, err);
> +        if (acl_err) {
> +            g_simple_async_result_take_error(priv->result, acl_err);
> +            acl_err = NULL;
> +        } else {
> +            g_simple_async_result_take_error(priv->result, err);
> +            err = NULL;
> +        }
>          libusb_unref_device(priv->device);
>          priv->device = NULL;
>          g_boxed_free(spice_usb_device_get_type(), priv->spice_device);
>          priv->spice_device = NULL;
>          priv->state  = STATE_DISCONNECTED;
>      }
> +    g_clear_error(&acl_err);
> +    g_clear_error(&err);
>  
>      spice_usb_acl_helper_close_acl(priv->acl_helper);
>      g_clear_object(&priv->acl_helper);
> -- 
> 2.1.4
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/spice-devel

Attachment: pgpGS3bR_bPgu.pgp
Description: PGP signature

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]