--- a/libpurple/protocols/msn/soap.c Sat Mar 16 14:17:45 2013 -0400 +++ b/libpurple/protocols/msn/soap.c Sat Mar 16 14:17:45 2013 -0400 @@ -304,21 +304,25 @@ if (faultcode != NULL) { char *faultdata = xmlnode_get_data(faultcode); - if (g_str_equal(faultdata, "psf:Redirect")) { + if (faultdata && g_str_equal(faultdata, "psf:Redirect")) { xmlnode *url = xmlnode_get_child(fault, "redirectUrl"); if (url) { char *urldata = xmlnode_get_data(url); - msn_soap_handle_redirect(conn, urldata); + if (urldata) + msn_soap_handle_redirect(conn, urldata); g_free(urldata); } g_free(faultdata); msn_soap_message_destroy(response); return TRUE; - } else if (g_str_equal(faultdata, "wsse:FailedAuthentication")) { + } else if (faultdata && g_str_equal(faultdata, "wsse:FailedAuthentication")) { xmlnode *reason = xmlnode_get_child(fault, "faultstring"); - char *reasondata = xmlnode_get_data(reason); + char *reasondata = NULL; + + if (reason) + reasondata = xmlnode_get_data(reason); msn_soap_connection_sanitize(conn, TRUE); msn_session_set_error(conn->session, MSN_ERROR_AUTH,