pidgin/pidgin

applied changes from 444dec0882a9950944852a408a50904a458629bf
release-2.x.y
2012-06-02, Elliott Sales de Andrade
e4d663169108
applied changes from 444dec0882a9950944852a408a50904a458629bf
through 1f233991b11d30d7bd9d1e058e19fe162a9600f3

Apparently, some random servers have decided to send us an annotation
with no name, and the value isn't really self-describing either. Anyway,
this empty name could cause a crash.

Fixes #15126.
--- a/libpurple/protocols/msn/contact.c Sat Jun 02 02:27:41 2012 +0000
+++ b/libpurple/protocols/msn/contact.c Sat Jun 02 02:30:13 2012 +0000
@@ -726,7 +726,7 @@
char *name, *value;
name = xmlnode_get_data(xmlnode_get_child(annotation, "Name"));
value = xmlnode_get_data(xmlnode_get_child(annotation, "Value"));
- if (!strcmp(name, "MSN.IM.MPOP")) {
+ if (name && g_str_equal(name, "MSN.IM.MPOP")) {
if (!value || atoi(value) != 0)
session->enable_mpop = TRUE;
else
@@ -802,9 +802,12 @@
Name = g_strdup(passport);
for (annotation = xmlnode_get_child(contactInfo, "annotations/Annotation");
- annotation; annotation = xmlnode_get_next_twin(annotation)) {
+ annotation;
+ annotation = xmlnode_get_next_twin(annotation)) {
char *name;
name = xmlnode_get_data(xmlnode_get_child(annotation, "Name"));
+ if (!name)
+ continue;
if (!strcmp(name, "AB.NickName"))
alias = xmlnode_get_data(xmlnode_get_child(annotation, "Value"));
else if (!strcmp(name, "MSN.IM.HasSharedFolder"))