diff options
| author | Alex Clayton <alex.clayton@isode.com> | 2016-03-21 15:41:42 (GMT) |
|---|---|---|
| committer | Alex Clayton <alex.clayton@isode.com> | 2016-03-22 11:24:06 (GMT) |
| commit | 0ec7a2d8ab803b0e2df2c616f61d2b69b042561f (patch) | |
| tree | c4c03f68cc001294a304ed23c923c6b8c37d0cb2 | |
| parent | aa5444b24c46f1e3a83682a59e71c780e2523160 (diff) | |
| download | stroke-0ec7a2d8ab803b0e2df2c616f61d2b69b042561f.zip stroke-0ec7a2d8ab803b0e2df2c616f61d2b69b042561f.tar.bz2 | |
Don't allow JIDs with explicitly empty resources
As per swiften patch of same name
(6159c580884583bad0e17d4e96ea9ffc7e0be29a).
A JID may have no resource, but may not have an empty resource. Mark
such JIDs as invalid.
Test-information: New unit test passes.
Change-Id: I66ec7810ac29cb3963470b08f0d9f4901d2307f3
| -rw-r--r-- | src/com/isode/stroke/jid/JID.java | 13 | ||||
| -rw-r--r-- | test/com/isode/stroke/jid/JIDTest.java | 10 |
2 files changed, 15 insertions, 8 deletions
diff --git a/src/com/isode/stroke/jid/JID.java b/src/com/isode/stroke/jid/JID.java index 59eef52..8b62ca1 100644 --- a/src/com/isode/stroke/jid/JID.java +++ b/src/com/isode/stroke/jid/JID.java @@ -1,8 +1,8 @@ /* - * Copyright (c) 2010-2012, Isode Limited, London, England. + * Copyright (c) 2010-2016, Isode Limited, London, England. * All rights reserved. */ /* * Copyright (c) 2010, Remko Tronçon. * All rights reserved. */ @@ -11,19 +11,19 @@ * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ package com.isode.stroke.jid; -import com.isode.stroke.idn.ICUConverter; -import com.isode.stroke.idn.IDNConverter; -import com.ibm.icu.text.StringPrepParseException; -import com.isode.stroke.base.NotNull; import java.util.Arrays; import java.util.List; +import com.isode.stroke.base.NotNull; +import com.isode.stroke.idn.ICUConverter; +import com.isode.stroke.idn.IDNConverter; + /** * JID helper. * * This represents the JID used in XMPP * (RFC6120 - http://tools.ietf.org/html/rfc6120 particularly section 1.4), * further defined in XMPP Address Format (http://tools.ietf.org/html/rfc6122 ). @@ -144,12 +144,15 @@ public class JID implements Comparable<JID> { */ public JID(String node, String domain, String resource) { NotNull.exceptIfNull(node, "node"); NotNull.exceptIfNull(domain, "domain"); valid_ = true; hasResource_ = (resource != null); + if (hasResource_ && resource.isEmpty()) { + valid_ = false; + } nameprepAndSetComponents(node, domain, resource); } private void nameprepAndSetComponents(String node, String domain, String resource) { if (domain.isEmpty() || idnConverter.getIDNAEncoded(domain) == null) { valid_ = false; diff --git a/test/com/isode/stroke/jid/JIDTest.java b/test/com/isode/stroke/jid/JIDTest.java index 96de429..69bee05 100644 --- a/test/com/isode/stroke/jid/JIDTest.java +++ b/test/com/isode/stroke/jid/JIDTest.java @@ -9,18 +9,16 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ package com.isode.stroke.jid; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; + import org.junit.Test; -import com.isode.stroke.jid.JID; public class JIDTest { public JIDTest() { } @@ -152,12 +150,18 @@ public class JIDTest { @Test public void testConstructorWithStrings_EmptyDomain() { JID testling = new JID("foo", "", "baz"); assertFalse(testling.isValid()); } + + @Test + public void testConstructorWithStrings_EmptyResource() { + JID testling = new JID("foo","bar",""); + assertFalse(testling.isValid()); + } @Test public void testIsBare() { assertTrue(new JID("foo@bar").isBare()); } |
Swift