[Spice-devel] [spice-gtk][PATCH 2/4] ppc: Fix header endianess

Christophe Fergeau cfergeau at redhat.com
Mon May 18 09:49:46 PDT 2015


On Mon, May 18, 2015 at 03:11:06PM +0200, Fabiano FidĂȘncio wrote:
> ---
>  gtk/spice-channel.c | 33 ++++++++++++++++++++++-----------
>  1 file changed, 22 insertions(+), 11 deletions(-)
> 
> diff --git a/gtk/spice-channel.c b/gtk/spice-channel.c
> index 4e7d8b7..e7460a6 100644
> --- a/gtk/spice-channel.c
> +++ b/gtk/spice-channel.c
> @@ -371,9 +371,9 @@ static inline void spice_header_set_msg_type(uint8_t *header, gboolean is_mini_h
>                                               uint16_t type)
>  {
>      if (is_mini_header) {
> -        ((SpiceMiniDataHeader *)header)->type = type;
> +        ((SpiceMiniDataHeader *)header)->type = GUINT16_TO_LE(type);
>      } else {
> -        ((SpiceDataHeader *)header)->type = type;
> +        ((SpiceDataHeader *)header)->type = GUINT16_TO_LE(type);
>      }
>  }
>  
> @@ -381,9 +381,9 @@ static inline void spice_header_set_msg_size(uint8_t *header, gboolean is_mini_h
>                                               uint32_t size)
>  {
>      if (is_mini_header) {
> -        ((SpiceMiniDataHeader *)header)->size = size;
> +        ((SpiceMiniDataHeader *)header)->size = GUINT32_TO_LE(size);
>      } else {
> -        ((SpiceDataHeader *)header)->size = size;
> +        ((SpiceDataHeader *)header)->size = GUINT32_TO_LE(size);
>      }
>  }
>  
> @@ -391,9 +391,9 @@ G_GNUC_INTERNAL
>  uint16_t spice_header_get_msg_type(uint8_t *header, gboolean is_mini_header)
>  {
>      if (is_mini_header) {
> -        return ((SpiceMiniDataHeader *)header)->type;
> +        return GUINT16_FROM_LE(((SpiceMiniDataHeader *)header)->type);
>      } else {
> -        return ((SpiceDataHeader *)header)->type;
> +        return GUINT16_FROM_LE(((SpiceDataHeader *)header)->type);
>      }
>  }
>  
> @@ -401,9 +401,9 @@ G_GNUC_INTERNAL
>  uint32_t spice_header_get_msg_size(uint8_t *header, gboolean is_mini_header)
>  {
>      if (is_mini_header) {
> -        return ((SpiceMiniDataHeader *)header)->size;
> +        return GUINT32_FROM_LE(((SpiceMiniDataHeader *)header)->size);
>      } else {
> -        return ((SpiceDataHeader *)header)->size;
> +        return GUINT32_FROM_LE(((SpiceDataHeader *)header)->size);
>      }
>  }
>  
> @@ -416,7 +416,7 @@ static inline void spice_header_set_msg_serial(uint8_t *header, gboolean is_mini
>                                                 uint64_t serial)
>  {
>      if (!is_mini_header) {
> -        ((SpiceDataHeader *)header)->serial = serial;
> +        ((SpiceDataHeader *)header)->serial = GUINT64_TO_LE(serial);
>      }
>  }
>  
> @@ -455,7 +455,7 @@ static inline uint32_t spice_header_get_msg_sub_list(uint8_t *header, gboolean i
>      if (is_mini_header) {
>          return 0;
>      } else {
> -        return ((SpiceDataHeader *)header)->sub_list;
> +        return GUINT32_FROM_LE(((SpiceDataHeader *)header)->sub_list);
>      }
>  }
>  

Doesn't the code below that belong to the next commit?
The code by itself looks good though, so ACK if you split that (or
tell me why it's done this way).

Christophe

> @@ -1146,6 +1146,9 @@ static void spice_channel_send_link(SpiceChannel *channel)
>          return;
>      }
>  
> +    c->link_hdr.major_version = GUINT32_TO_LE(c->link_hdr.major_version);
> +    c->link_hdr.minor_version = GUINT32_TO_LE(c->link_hdr.minor_version);
> +
>      c->link_msg.connection_id = spice_session_get_connection_id(c->session);
>      c->link_msg.channel_type  = c->channel_type;
>      c->link_msg.channel_id    = c->channel_id;
> @@ -1159,6 +1162,8 @@ static void spice_channel_send_link(SpiceChannel *channel)
>      buffer = g_malloc0(sizeof(c->link_hdr) + c->link_hdr.size);
>      p = buffer;
>  
> +    c->link_hdr.size = GUINT32_TO_LE(c->link_hdr.size);
> +
>      memcpy(p, &c->link_hdr, sizeof(c->link_hdr)); p += sizeof(c->link_hdr);
>      memcpy(p, &c->link_msg, sizeof(c->link_msg)); p += sizeof(c->link_msg);
>  
> @@ -1196,13 +1201,19 @@ static gboolean spice_channel_recv_link_hdr(SpiceChannel *channel)
>          goto error;
>      }
>  
> -    CHANNEL_DEBUG(channel, "Peer version: %d:%d", c->peer_hdr.major_version, c->peer_hdr.minor_version);
> +    CHANNEL_DEBUG(channel, "Peer version: %d:%d",
> +                  GUINT32_FROM_LE(c->peer_hdr.major_version),
> +                  GUINT32_FROM_LE(c->peer_hdr.minor_version));
>      if (c->peer_hdr.major_version != c->link_hdr.major_version) {
>          g_warning("major mismatch (got %d, expected %d)",
>                    c->peer_hdr.major_version, c->link_hdr.major_version);
>          goto error;
>      }
>  
> +    c->peer_hdr.major_version = GUINT32_FROM_LE(c->peer_hdr.major_version);
> +    c->peer_hdr.minor_version = GUINT32_FROM_LE(c->peer_hdr.minor_version);
> +    c->peer_hdr.size = GUINT32_FROM_LE(c->peer_hdr.size);
> +
>      c->peer_msg = g_malloc0(c->peer_hdr.size);
>      if (c->peer_msg == NULL) {
>          g_warning("invalid peer header size: %u", c->peer_hdr.size);
> -- 
> 2.4.0
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20150518/d32d3c75/attachment-0001.sig>


More information about the Spice-devel mailing list