# HG changeset patch # User Elliott Sales de Andrade # Date 1250466375 0 # Node ID db99cde1845c30fa29e98a23f6c1814c02838322 # Parent cd257777ac5d178051ae227a8c0801ffdc680b8a Fix crashes when filenames end up being NULL in some prpls. Fixed a minor leak in MSNP9 while we're at it. committer: John Bailey diff -r cd257777ac5d -r db99cde1845c libpurple/protocols/bonjour/bonjour_ft.c --- a/libpurple/protocols/bonjour/bonjour_ft.c Sun Aug 16 23:28:12 2009 +0000 +++ b/libpurple/protocols/bonjour/bonjour_ft.c Sun Aug 16 23:46:15 2009 +0000 @@ -450,9 +450,11 @@ /* TODO: Make sure that it is advertising a bytestreams transfer */ - bonjour_xfer_receive(pc, id, sid, name, filesize, filename, XEP_BYTESTREAMS); + if (filename) { + bonjour_xfer_receive(pc, id, sid, name, filesize, filename, XEP_BYTESTREAMS); - parsed_receive = TRUE; + parsed_receive = TRUE; + } } if (!parsed_receive) { diff -r cd257777ac5d -r db99cde1845c libpurple/protocols/jabber/oob.c --- a/libpurple/protocols/jabber/oob.c Sun Aug 16 23:28:12 2009 +0000 +++ b/libpurple/protocols/jabber/oob.c Sun Aug 16 23:46:15 2009 +0000 @@ -207,7 +207,10 @@ url = xmlnode_get_data(urlnode); jox = g_new0(JabberOOBXfer, 1); - purple_url_parse(url, &jox->address, &jox->port, &jox->page, NULL, NULL); + if (!purple_url_parse(url, &jox->address, &jox->port, &jox->page, NULL, NULL)) { + g_free(url); + return; + } g_free(url); jox->js = js; jox->headers = g_string_new(""); diff -r cd257777ac5d -r db99cde1845c libpurple/protocols/msn/slp.c --- a/libpurple/protocols/msn/slp.c Sun Aug 16 23:28:12 2009 +0000 +++ b/libpurple/protocols/msn/slp.c Sun Aug 16 23:46:15 2009 +0000 @@ -351,7 +351,7 @@ g_free(bin); - purple_xfer_set_filename(xfer, file_name); + purple_xfer_set_filename(xfer, file_name ? file_name : ""); g_free(file_name); purple_xfer_set_size(xfer, file_size); purple_xfer_set_init_fnc(xfer, msn_xfer_init); diff -r cd257777ac5d -r db99cde1845c libpurple/protocols/msnp9/slp.c --- a/libpurple/protocols/msnp9/slp.c Sun Aug 16 23:28:12 2009 +0000 +++ b/libpurple/protocols/msnp9/slp.c Sun Aug 16 23:46:15 2009 +0000 @@ -338,7 +338,7 @@ char *bin; gsize bin_len; guint32 file_size; - char *file_name; + gchar *file_name; gunichar2 *uni_name; account = slpcall->slplink->session->account; @@ -368,7 +368,8 @@ g_free(bin); - purple_xfer_set_filename(xfer, file_name); + purple_xfer_set_filename(xfer, file_name ? file_name : ""); + g_free(file_name); purple_xfer_set_size(xfer, file_size); purple_xfer_set_init_fnc(xfer, msn_xfer_init); purple_xfer_set_request_denied_fnc(xfer, msn_xfer_cancel);