Advertisement
tomkiewicz

scb-demo-without-scb

Sep 2nd, 2012
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.80 KB | None | 0 0
  1. static int gg_session_handle_xml_event110(struct gg_session *gs, uint32_t type, const char *ptr, size_t len, struct gg_event *ge)
  2. {
  3.     int offset = 0;
  4.     uint16_t seq, data_len;
  5.     char *data = NULL;
  6.    
  7.     if (offset + 3 > len)
  8.         goto fail;
  9.     /* 0x08 00 10 */
  10.     offset += 3;
  11.    
  12.     if (offset + 2 > len)
  13.         goto fail;
  14.     offset += gg_packed_int_read(ptr + offset, &seq);
  15.    
  16.     if (offset + 1 > len)
  17.         goto fail;
  18.     /* 0x1a */
  19.     offset++;
  20.  
  21.     if (offset + 2 > len)
  22.         goto fail;
  23.     offset += gg_packed_int_read(ptr + offset, &data_len);
  24.    
  25.     data = malloc(data_len + 1);
  26.     if (data == NULL)
  27.         goto fail;
  28.     memcpy(data, ptr + offset, data_len);
  29.     data[data_len] = '\0';
  30.    
  31.     ge->type = GG_EVENT_XML_EVENT;
  32.     ge->event.xml_event.data = data;
  33.    
  34.     return gg_ack_gg11(gs, GG_ACK110_MPA, seq, ge);
  35. fail:
  36.     free(data);
  37.     return -1;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement