On Thu, Jun 23, 2011 at 11:16:47AM +0200, Alon Levy wrote:
> According to spice.proto the smartcard channel can receive acks and any
> other message defined in BaseChannel. While the spicec implementation didn't
> send an ACK spice-gtk does, so handle it.
> ---
>  server/smartcard.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/server/smartcard.c b/server/smartcard.c
> index 888b23a..f948e5b 100644
> --- a/server/smartcard.c
> +++ b/server/smartcard.c
> @@ -454,6 +454,12 @@ static int smartcard_channel_handle_message(RedChannel 
> *channel, SpiceDataHeader
>      VSCMsgHeader* vheader = (VSCMsgHeader*)msg;
>      SmartCardChannel* smartcard_channel = (SmartCardChannel*)channel;
>  
> +    if (header->type != SPICE_MSGC_SMARTCARD_DATA) {
> +        /* handle ack's, spicy sends them while spicec does not */
> +        return red_channel_handle_message(channel, header->size, 
> header->type,
> +                                          msg);
> +    }
> +

I couldn't figure out how other channels handle this, so ACK

>      ASSERT(header->size == vheader->length + sizeof(VSCMsgHeader));

There shouldn't be an ASSERT here though, since as far as I can tell, these
values come directly from the network, so specially crafted messages could
use this assert to take down QEMU.

Christophe

Attachment: pgplOujCwyWQo.pgp
Description: PGP signature

_______________________________________________
Spice-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to