# HG changeset patch # User masca@cpw.pidgin.im # Date 1278442618 0 # Node ID e0c374ad8fd3b2b1018afc8a5baf387bc1c16d1b # Parent 6e7a0e87d589ffeb560759cb8965945ca3eaf3ad Set the correct length of the data before calling the function to process it. diff -r 6e7a0e87d589 -r e0c374ad8fd3 libpurple/protocols/msn/msg.c --- a/libpurple/protocols/msn/msg.c Tue Jul 06 18:51:44 2010 +0000 +++ b/libpurple/protocols/msn/msg.c Tue Jul 06 18:56:58 2010 +0000 @@ -942,8 +942,12 @@ data = msn_message_get_bin_data(msg, &len); - if (msg->part) - msn_slplink_process_msg(slplink, msg->part->header, data, len); + if (msg->part) { + len -= P2P_PACKET_HEADER_SIZE; + len -= P2P_PACKET_FOOTER_SIZE; + + msn_slplink_process_msg(slplink, msg->part->header, data+P2P_PACKET_HEADER_SIZE, len); + } else /* This should never happen. */ purple_debug_fatal("msn", "P2P message without a Part.\n"); } diff -r 6e7a0e87d589 -r e0c374ad8fd3 libpurple/protocols/msn/slplink.c --- a/libpurple/protocols/msn/slplink.c Tue Jul 06 18:51:44 2010 +0000 +++ b/libpurple/protocols/msn/slplink.c Tue Jul 06 18:56:58 2010 +0000 @@ -463,9 +463,6 @@ MsnSlpMessage *slpmsg; guint64 offset; - len -= P2P_PACKET_HEADER_SIZE; - len -= P2P_PACKET_FOOTER_SIZE; - if (header->total_size < header->length) { /* We seem to have received a bad header */