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

Fabiano FidĂȘncio fabiano at fidencio.org
Mon May 18 10:08:15 PDT 2015


On Mon, May 18, 2015 at 6:49 PM, Christophe Fergeau <cfergeau at redhat.com> wrote:
> 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).

It totally does. My fault. I will split and add it to 3rd patch.


>
> 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
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>



-- 
Fabiano FidĂȘncio


More information about the Spice-devel mailing list