libpurple/protocols/jabber/si.c

changeset 34304
faf0414a8b51
parent 33895
72fe8d31bad3
child 34332
876483829700
child 34889
4ea2da14cd0e
equal deleted inserted replaced
34302:3949b825f4bf 34304:faf0414a8b51
447 jsx->rxqueue[0], jsx->rxqueue[1], jsx->rxqueue[2], 447 jsx->rxqueue[0], jsx->rxqueue[1], jsx->rxqueue[2],
448 jsx->rxqueue[3], jsx->rxqueue[4]); 448 jsx->rxqueue[3], jsx->rxqueue[4]);
449 close(source); 449 close(source);
450 purple_xfer_cancel_remote(xfer); 450 purple_xfer_cancel_remote(xfer);
451 return; 451 return;
452 } else if(jsx->rxlen - 5 < jsx->rxqueue[4] + 2) { 452 } else if(jsx->rxlen - 5 < (size_t)jsx->rxqueue[4] + 2) {
453 /* Upper-bound of 257 (jsx->rxlen = 5, jsx->rxqueue[4] = 0xFF) */ 453 /* Upper-bound of 257 (jsx->rxlen = 5, jsx->rxqueue[4] = 0xFF) */
454 unsigned short to_read = jsx->rxqueue[4] + 2 - (jsx->rxlen - 5); 454 unsigned short to_read = jsx->rxqueue[4] + 2 - (jsx->rxlen - 5);
455 purple_debug_info("jabber", "reading %u bytes for DST.ADDR + port num (trying to read %hu now)\n", 455 purple_debug_info("jabber", "reading %u bytes for DST.ADDR + port num (trying to read %hu now)\n",
456 jsx->rxqueue[4] + 2, to_read); 456 jsx->rxqueue[4] + 2, to_read);
457 len = read(source, buffer, to_read); 457 len = read(source, buffer, to_read);
466 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len); 466 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len);
467 jsx->rxlen += len; 467 jsx->rxlen += len;
468 } 468 }
469 469
470 /* Have we not read all of DST.ADDR and the following 2-byte port number? */ 470 /* Have we not read all of DST.ADDR and the following 2-byte port number? */
471 if(jsx->rxlen - 5 < jsx->rxqueue[4] + 2) 471 if(jsx->rxlen - 5 < (size_t)jsx->rxqueue[4] + 2)
472 return; 472 return;
473 473
474 purple_input_remove(purple_xfer_get_watcher(xfer)); 474 purple_input_remove(purple_xfer_get_watcher(xfer));
475 purple_xfer_set_watcher(xfer, 0); 475 purple_xfer_set_watcher(xfer, 0);
476 476
586 } 586 }
587 jsx->rxqueue = g_realloc(jsx->rxqueue, len + jsx->rxlen); 587 jsx->rxqueue = g_realloc(jsx->rxqueue, len + jsx->rxlen);
588 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len); 588 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len);
589 jsx->rxlen += len; 589 jsx->rxlen += len;
590 return; 590 return;
591 } else if(jsx->rxlen - 2 < jsx->rxqueue[1]) { 591 } else if(jsx->rxlen - 2 < (size_t)jsx->rxqueue[1]) {
592 /* Has a maximum value of 255 (jsx->rxlen = 2, jsx->rxqueue[1] = 0xFF) */ 592 /* Has a maximum value of 255 (jsx->rxlen = 2, jsx->rxqueue[1] = 0xFF) */
593 unsigned short to_read = jsx->rxqueue[1] - (jsx->rxlen - 2); 593 unsigned short to_read = jsx->rxqueue[1] - (jsx->rxlen - 2);
594 purple_debug_info("jabber", "reading %u bytes for auth methods (trying to read %hu now)\n", 594 purple_debug_info("jabber", "reading %u bytes for auth methods (trying to read %hu now)\n",
595 jsx->rxqueue[1], to_read); 595 jsx->rxqueue[1], to_read);
596 len = read(source, buffer, to_read); 596 len = read(source, buffer, to_read);
604 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len); 604 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len);
605 jsx->rxlen += len; 605 jsx->rxlen += len;
606 } 606 }
607 607
608 /* Have we not read all the auth. method bytes? */ 608 /* Have we not read all the auth. method bytes? */
609 if(jsx->rxlen -2 < jsx->rxqueue[1]) 609 if(jsx->rxlen -2 < (size_t)jsx->rxqueue[1])
610 return; 610 return;
611 611
612 purple_debug_info("jabber", "checking to make sure we're socks FIVE\n"); 612 purple_debug_info("jabber", "checking to make sure we're socks FIVE\n");
613 613
614 if(jsx->rxqueue[0] != 0x05) { 614 if(jsx->rxqueue[0] != 0x05) {

mercurial