/pidgin/main: ea46ab68f0dc: Fix a possible information leak when...

Mark Doliner mark at kingant.net
Wed Oct 22 10:20:30 EDT 2014


Changeset: ea46ab68f0dc5286e8b3c5620fe31898c769caff
Author:	 Mark Doliner <mark at kingant.net>
Date:	 2014-10-13 23:47 -0700
Branch:	 release-2.x.y
URL: https://hg.pidgin.im/pidgin/main/rev/ea46ab68f0dc

Description:

Fix a possible information leak when preping XMPP JIDs.

Discovered and fixed by Thijs Alkemade and Paul Aurich and reported
to us privately on our security at pidgin.im mailing list.

diffstat:

 ChangeLog                          |  5 +++++
 libpurple/protocols/jabber/jutil.c |  6 ++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diffs (40 lines):

diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -45,6 +45,11 @@ version 2.10.10 (10/22/14):
 	  (CVE-2014-NNNN)
 
 	XMPP:
+	* Fix potential information leak where a malicious XMPP server and
+	  possibly even a malicious remote user could create a carefully crafted
+	  XMPP message that causes libpurple to send an XMPP message containing
+	  arbitrary memory. (Discovered and fixed by Thijs Alkemade and Paul
+	  Aurich) (CVE-2014-NNNN)
 	* Fix Facebook XMPP roster quirks. (#15041, #15957)
 
 	Yahoo:
diff --git a/libpurple/protocols/jabber/jutil.c b/libpurple/protocols/jabber/jutil.c
--- a/libpurple/protocols/jabber/jutil.c
+++ b/libpurple/protocols/jabber/jutil.c
@@ -81,10 +81,10 @@ jabber_idn_validate(const char *str, con
 
 		if (slash) {
 			domain_len = slash - str;
-			resource = slash;
+			resource = slash + 1;
 			resource_len = null - (slash + 1);
 		} else {
-			domain_len = null - (str + 1);
+			domain_len = null - str;
 		}
 	}
 
@@ -126,6 +126,8 @@ jabber_idn_validate(const char *str, con
 			jid = NULL;
 			goto out;
 		}
+
+		jid->domain = g_strndup(domain, domain_len);
 	} else {
 		/* Apply nameprep */
 		if (stringprep_nameprep(idn_buffer, sizeof(idn_buffer)) != STRINGPREP_OK) {



More information about the Commits mailing list