diff options
author | Jorge Villase?or <masca@cpw.pidgin.im> | 2010-07-06 18:56:58 +0000 |
---|---|---|
committer | Jorge Villase?or <masca@cpw.pidgin.im> | 2010-07-06 18:56:58 +0000 |
commit | 728a73f7a766aa900dad0734d64f5a700fcbdb0a (patch) | |
tree | 9f5a95644f548f3ff91a57a4f4a7bd3761d9baea | |
parent | 66614d8300e1b8d1457b6c660951babeee50c9f9 (diff) | |
download | pidgin-728a73f7a766aa900dad0734d64f5a700fcbdb0a.tar.gz |
Set the correct length of the data before calling the function to process it.
-rw-r--r-- | libpurple/protocols/msn/msg.c | 8 | ||||
-rw-r--r-- | libpurple/protocols/msn/slplink.c | 3 |
2 files changed, 6 insertions, 5 deletions
diff --git a/libpurple/protocols/msn/msg.c b/libpurple/protocols/msn/msg.c index 3b5b135901..42764ad78f 100644 --- a/libpurple/protocols/msn/msg.c +++ b/libpurple/protocols/msn/msg.c @@ -942,8 +942,12 @@ msn_p2p_msg(MsnCmdProc *cmdproc, MsnMessage *msg) 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 --git a/libpurple/protocols/msn/slplink.c b/libpurple/protocols/msn/slplink.c index 0ce79e3798..52525efa1f 100644 --- a/libpurple/protocols/msn/slplink.c +++ b/libpurple/protocols/msn/slplink.c @@ -463,9 +463,6 @@ msn_slplink_process_msg(MsnSlpLink *slplink, MsnP2PHeader *header, const char *d 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 */ |