changeset 31177:53096ba34fe6

jabber: Properly parse realm="" in DIGEST-MD5, which is apparently valid. On a marginally related note, the ABNF in this RFC is really ugly. Refs #a14514.
author Paul Aurich <paul@darkrain42.org>
date Wed, 02 Feb 2011 05:51:09 +0000
parents e743507b3767
children 6448e3f3ddd4
files ChangeLog libpurple/protocols/jabber/auth_digest_md5.c
diffstat 2 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Feb 02 05:47:50 2011 +0000
+++ b/ChangeLog	Wed Feb 02 05:51:09 2011 +0000
@@ -58,6 +58,8 @@
 	  (Nikita Kozlov) (#13136)
 	* Handle Connection: Close headers for BOSH, when the server does not
 	  terminate the connection itself. (#13008)
+	* Improved parsing for DIGEST-MD5, which should resolve issues
+	  connecting to some jabberd2 servers. (#a14514)
 
 	Yahoo!/Yahoo! JAPAN:
 	* Fix a crash when an account disconnects before a p2p session is
--- a/libpurple/protocols/jabber/auth_digest_md5.c	Wed Feb 02 05:47:50 2011 +0000
+++ b/libpurple/protocols/jabber/auth_digest_md5.c	Wed Feb 02 05:51:09 2011 +0000
@@ -78,12 +78,12 @@
 					val_start++;
 
 				val_end = cur;
-				while (val_end != val_start && (*val_end == ' ' || *val_end == ',' || *val_end == '\t'
+				while (val_end >= val_start && (*val_end == ' ' || *val_end == ',' || *val_end == '\t'
 						|| *val_end == '\r' || *val_end == '\n'
 						|| *val_end == '"'  || *val_end == '\0'))
 					val_end--;
 
-				if (val_start != val_end)
+				if (val_end - val_start + 1 >= 0)
 					value = g_strndup(val_start, val_end - val_start + 1);
 			}