# HG changeset patch # User Paul Aurich # Date 1247273365 0 # Node ID 167d7c3a4f7bc2dc42c7c29b966c2bde1478b5d6 # Parent 2eba2794423df619dda9bc8b77ec12e8a86fd9dd XMPP allows for internationalized domain names. We don't actually support IDNA for connecting (AFAIK), but we need to be able to receive stanzas from such users. This check might be overly accepting of some non-ASCII that wouldn't properly convert according to RFC3490. See http://xmpp.org/internet-drafts/draft-ietf-xmpp-3920bis-00.html#addressing-domain and http://tools.ietf.org/html/rfc3490 diff -r 2eba2794423d -r 167d7c3a4f7b libpurple/protocols/jabber/jutil.c --- a/libpurple/protocols/jabber/jutil.c Sat Jul 11 00:05:43 2009 +0000 +++ b/libpurple/protocols/jabber/jutil.c Sat Jul 11 00:49:25 2009 +0000 @@ -73,11 +73,11 @@ while(c && *c) { gunichar ch = g_utf8_get_char(c); /* The list of characters allowed in domain names is pretty small */ - if (!( (ch >= 'a' && ch <= 'z') + if ((ch <= 0x7F && !( (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || ch == '.' - || ch == '-' )) + || ch == '-' )) || (ch >= 0x80 && !g_unichar_isgraph(ch))) return FALSE; c = g_utf8_next_char(c); diff -r 2eba2794423d -r 167d7c3a4f7b libpurple/tests/test_jabber_jutil.c --- a/libpurple/tests/test_jabber_jutil.c Sat Jul 11 00:05:43 2009 +0000 +++ b/libpurple/tests/test_jabber_jutil.c Sat Jul 11 00:49:25 2009 +0000 @@ -95,6 +95,10 @@ assert_valid_jid("まりるーむ@conference.jabber.org"); assert_valid_jid("mark.doliner@gmail.com/まりるーむ"); assert_valid_jid("mark.doliner@gmail/stuff.org"); + assert_valid_jid("stuart@nödåtXäYZ.se"); + assert_valid_jid("stuart@nödåtXäYZ.se/まりるーむ"); + assert_valid_jid("mark.doliner@わいど.org"); + assert_valid_jid("nick@まつ.おおかみ.net"); assert_invalid_jid("@gmail.com"); assert_invalid_jid("@@gmail.com"); @@ -107,7 +111,6 @@ assert_invalid_jid("mark.doliner@gmail_stuff.org"); assert_invalid_jid("mark.doliner@gmail[stuff.org"); assert_invalid_jid("mark.doliner@gmail\\stuff.org"); - assert_invalid_jid("mark.doliner@わいど.org"); } END_TEST