Mercurial > pidgin
diff libpurple/protocols/jabber/jabber.c @ 25255:d29f9f946ba2
propagate from branch 'im.pidgin.pidgin' (head dd9cb9ed28311438c0cc3c2962f1c030fb282df3)
to branch 'im.pidgin.cpw.malu.xmpp.idle' (head 5a97b53686e8b9328a12ab53881667b0dc4f0ac2)
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Thu, 01 Jan 2009 18:15:17 +0000 |
parents | c3e44dae2f65 3a4070656d61 |
children | a92df60855f3 |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c Sun Dec 28 10:17:15 2008 +0000 +++ b/libpurple/protocols/jabber/jabber.c Thu Jan 01 18:15:17 2009 +0000 @@ -351,9 +351,33 @@ { /* because printing a tab to debug every minute gets old */ - if(strcmp(data, "\t")) - purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s\n", - js->gsc ? " (ssl)" : "", data); + if(strcmp(data, "\t")) { + char *text = NULL, *last_part = NULL, *tag_start = NULL; + + /* Because debug logs with plaintext passwords make me sad */ + if(js->state != JABBER_STREAM_CONNECTED && + /* Either <auth> or <query><password>... */ + (((tag_start = strstr(data, "<auth ")) && + strstr(data, "xmlns='urn:ietf:params:xml:ns:xmpp-sasl'")) || + ((tag_start = strstr(data, "<query ")) && + strstr(data, "xmlns='jabber:iq:auth'>") && + (tag_start = strstr(tag_start, "<password>"))))) { + char *data_start, *tag_end = strchr(tag_start, '>'); + text = g_strdup(data); + + data_start = text + (tag_end - data) + 1; + + last_part = strchr(data_start, '<'); + *data_start = '\0'; + } + + purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s%s%s\n", + js->gsc ? " (ssl)" : "", text ? text : data, + last_part ? "password removed" : "", + last_part ? last_part : ""); + + g_free(text); + } /* If we've got a security layer, we need to encode the data, * splitting it on the maximum buffer length negotiated */