Mercurial > pidgin.yaz
diff libpurple/protocols/jabber/auth.c @ 29136:b94fd073187c
jabber: Fix that leak I mentioned (and fix a mistake where error/response weren't NULL-initialized)
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Fri, 04 Dec 2009 06:18:05 +0000 |
parents | 4f45aae3ace1 |
children | c64b22932ffa |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/auth.c Fri Dec 04 06:04:18 2009 +0000 +++ b/libpurple/protocols/jabber/auth.c Fri Dec 04 06:18:05 2009 +0000 @@ -165,7 +165,7 @@ xmlnode *response = NULL; xmlnode *mechs, *mechnode; JabberSaslState state; - const char *msg = NULL; + char *msg = NULL; if(js->registration) { jabber_register_start(js); @@ -225,6 +225,8 @@ jabber_send(js, response); xmlnode_free(response); } + + g_free(msg); } static void auth_old_result_cb(JabberStream *js, const char *from, @@ -420,7 +422,7 @@ if (js->auth_mech && js->auth_mech->handle_challenge) { xmlnode *response = NULL; - const char *msg = NULL; + char *msg = NULL; JabberSaslState state = js->auth_mech->handle_challenge(js, packet, &response, &msg); if (state == JABBER_SASL_STATE_FAIL) { purple_connection_error_reason(js->gc, @@ -430,6 +432,8 @@ jabber_send(js, response); xmlnode_free(response); } + + g_free(msg); } else purple_debug_warning("jabber", "Received unexpected (and unhandled) <challenge/>\n"); } @@ -446,7 +450,7 @@ } if (js->auth_mech && js->auth_mech->handle_success) { - const char *msg = NULL; + char *msg = NULL; JabberSaslState state = js->auth_mech->handle_success(js, packet, &msg); if (state == JABBER_SASL_STATE_FAIL) { @@ -460,6 +464,8 @@ msg ? msg : _("Server thinks authentication is complete, but client does not")); return; } + + g_free(msg); } /* @@ -473,11 +479,10 @@ void jabber_auth_handle_failure(JabberStream *js, xmlnode *packet) { PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; - char *msg; + char *msg = NULL; if (js->auth_mech && js->auth_mech->handle_failure) { xmlnode *stanza = NULL; - const char *msg = NULL; JabberSaslState state = js->auth_mech->handle_failure(js, packet, &stanza, &msg); if (state != JABBER_SASL_STATE_FAIL && stanza) { @@ -487,8 +492,10 @@ } } - msg = jabber_parse_error(js, packet, &reason); - if(!msg) { + if (!msg) + msg = jabber_parse_error(js, packet, &reason); + + if (!msg) { purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("Invalid response from server"));