[Spice-devel] [PATCH] usbredir: fix redirection of user-accesible device nodes.
Michal Suchanek
michal.suchanek at ruk.cuni.cz
Mon Jun 29 06:46:56 PDT 2015
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 at gmail.com>
---
src/channel-usbredir.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/channel-usbredir.c b/src/channel-usbredir.c
index 292b82f..b5745b6 100644
--- a/src/channel-usbredir.c
+++ b/src/channel-usbredir.c
@@ -276,21 +276,24 @@ 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 (!acl_err && priv->state == STATE_DISCONNECTING) {
err = g_error_new_literal(G_IO_ERROR, G_IO_ERROR_CANCELLED,
"USB redirection channel connect cancelled");
}
- if (!err) {
- spice_usbredir_channel_open_device(channel, &err);
- }
+
+ 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);
+ else
+ g_simple_async_result_take_error(priv->result, err);
libusb_unref_device(priv->device);
priv->device = NULL;
g_boxed_free(spice_usb_device_get_type(), priv->spice_device);
--
2.1.4
More information about the Spice-devel
mailing list