1.1 --- a/ChangeLog
1.2 +++ b/ChangeLog
1.3 @@ -18,6 +18,8 @@
1.4 properly. In addition, it is no longer possible to add buddies of
1.5 the form "room@conference.example.net/User", where
1.6 room@conference.example.net is a MUC.
1.7 + * Don't crash when receiving "smileyfied" XHTML-IM from clients that don't
1.8 + support bits of binary (ie. when getting an empty <data/> in return)
1.9
1.10 Yahoo!/Yahoo! JAPAN:
1.11 * Accounts now have "Use account proxy for SSL connections" option. This
2.1 --- a/libpurple/protocols/jabber/data.c
2.2 +++ b/libpurple/protocols/jabber/data.c
2.3 @@ -77,6 +77,13 @@
2.4 data->type = g_strdup(xmlnode_get_attrib(tag, "type"));
2.5
2.6 raw_data = xmlnode_get_data(tag);
2.7 +
2.8 + if (raw_data == NULL) {
2.9 + purple_debug_error("jabber", "data element was empty");
2.10 + g_free(data);
2.11 + return NULL;
2.12 + }
2.13 +
2.14 data->data = purple_base64_decode(raw_data, &size);
2.15 data->size = size;
2.16
3.1 --- a/libpurple/protocols/jabber/message.c
3.2 +++ b/libpurple/protocols/jabber/message.c
3.3 @@ -493,7 +493,7 @@
3.4 xmlnode *item_not_found = xmlnode_get_child(packet, "item-not-found");
3.5
3.6 /* did we get a data element as result? */
3.7 - if (data_element) {
3.8 + if (data_element && type == JABBER_IQ_RESULT) {
3.9 JabberData *data = jabber_data_create_from_xml(data_element);
3.10
3.11 if (data) {