Mercurial > pidgin
diff src/protocols/msn/slplink.c @ 10092:1843023b8189
[gaim-migrate @ 11109]
This fixes the crash after signon on MSN when you have Miranda users on your
buddy list.
I also tidied up the printing of SLP debug info when it's enabled, but it's not
enabled unless you explicitly enable it, so you probably won't notice.
committer: Tailor Script <tailor@pidgin.im>
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Wed, 13 Oct 2004 14:40:45 +0000 |
parents | 65967ba9e66d |
children | 65e7df286076 |
line wrap: on
line diff
--- a/src/protocols/msn/slplink.c Wed Oct 13 12:26:10 2004 +0000 +++ b/src/protocols/msn/slplink.c Wed Oct 13 14:40:45 2004 +0000 @@ -447,7 +447,6 @@ slpmsg->session_id = msg->msnslp_header.session_id; slpmsg->size = msg->msnslp_header.total_size; slpmsg->flags = msg->msnslp_header.flags; - slpmsg->buffer = g_malloc(slpmsg->size); if (slpmsg->session_id) { @@ -471,10 +470,19 @@ } } } + if (!slpmsg->fp) + { + slpmsg->buffer = g_try_malloc(slpmsg->size); + if (slpmsg->buffer == NULL) + { + gaim_debug_error("msn", "Failed to allocate buffer for slpmsg\n"); + return; + } + } } else { - slpmsg = msn_slplink_message_find(slplink, msg->msnslp_header.id); + slpmsg = msn_slplink_message_find(slplink, msg->msnslp_header.session_id, msg->msnslp_header.id); } if (slpmsg != NULL) @@ -486,7 +494,13 @@ } else { - memcpy(slpmsg->buffer + offset, data, len); + if ((offset + len) > slpmsg->size) + { + gaim_debug_error("msn", "Oversized slpmsg\n"); + g_return_if_reached(); + } + else + memcpy(slpmsg->buffer + offset, data, len); } } else @@ -544,7 +558,7 @@ } MsnSlpMessage * -msn_slplink_message_find(MsnSlpLink *slplink, long id) +msn_slplink_message_find(MsnSlpLink *slplink, long session_id, long id) { GList *e; @@ -552,7 +566,7 @@ { MsnSlpMessage *slpmsg = e->data; - if (slpmsg->id == id) + if ((slpmsg->session_id == session_id) && (slpmsg->id == id)) return slpmsg; }