diff options
| author | Kevin Smith <git@kismith.co.uk> | 2015-03-11 14:54:53 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2016-03-17 14:05:16 (GMT) | 
| commit | 6159c580884583bad0e17d4e96ea9ffc7e0be29a (patch) | |
| tree | 5dc0ee6cb91c30fc17002a196b154dbb7e12466e | |
| parent | 603c639030c3d0582dcd499fa3ee95f2a26885d2 (diff) | |
| download | swift-6159c580884583bad0e17d4e96ea9ffc7e0be29a.zip swift-6159c580884583bad0e17d4e96ea9ffc7e0be29a.tar.bz2 | |
Don't allow JIDs with explicitly empty resources
A JID may have no resource, but may not have an empty resource. Mark such
JIDs as invalid.
Test-Information:
Added a unit test for the failure case (and made it pass). Other unit tests still pass
Change-Id: I4fb300f716e635a3f8f02843891f25218da77130
| -rw-r--r-- | Swiften/JID/JID.cpp | 5 | ||||
| -rw-r--r-- | Swiften/JID/JID.h | 3 | ||||
| -rw-r--r-- | Swiften/JID/UnitTest/JIDTest.cpp | 11 | 
3 files changed, 14 insertions, 5 deletions
| diff --git a/Swiften/JID/JID.cpp b/Swiften/JID/JID.cpp index a0f18d5..37fb755 100644 --- a/Swiften/JID/JID.cpp +++ b/Swiften/JID/JID.cpp @@ -1,5 +1,5 @@  /* - * Copyright (c) 2010-2013 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -146,6 +146,9 @@ JID::JID(const std::string& node, const std::string& domain) : valid_(true), has  }  JID::JID(const std::string& node, const std::string& domain, const std::string& resource) : valid_(true), hasResource_(true) { +	if (resource.empty()) { +		valid_ = false; +	}  	nameprepAndSetComponents(node, domain, resource);  } diff --git a/Swiften/JID/JID.h b/Swiften/JID/JID.h index 00ee27f..0fd2f00 100644 --- a/Swiften/JID/JID.h +++ b/Swiften/JID/JID.h @@ -1,5 +1,5 @@  /* - * Copyright (c) 2010-2013 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -195,4 +195,3 @@ namespace Swift {  	SWIFTEN_API std::ostream& operator<<(std::ostream& os, const Swift::JID& j);  } - diff --git a/Swiften/JID/UnitTest/JIDTest.cpp b/Swiften/JID/UnitTest/JIDTest.cpp index 307243a..8f43576 100644 --- a/Swiften/JID/UnitTest/JIDTest.cpp +++ b/Swiften/JID/UnitTest/JIDTest.cpp @@ -1,5 +1,5 @@  /* - * Copyright (c) 2010 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -28,6 +28,7 @@ class JIDTest : public CppUnit::TestFixture  		CPPUNIT_TEST(testConstructorWithString_SpacesInNode);  		CPPUNIT_TEST(testConstructorWithStrings);  		CPPUNIT_TEST(testConstructorWithStrings_EmptyDomain); +		CPPUNIT_TEST(testConstructorWithStrings_EmptyResource);  		CPPUNIT_TEST(testIsBare);  		CPPUNIT_TEST(testIsBare_NotBare);  		CPPUNIT_TEST(testToBare); @@ -154,7 +155,7 @@ class JIDTest : public CppUnit::TestFixture  			CPPUNIT_ASSERT(!JID("   alice@wonderland.lit").isValid());  			CPPUNIT_ASSERT(!JID("alice   @wonderland.lit").isValid());  		} -		 +  		void testConstructorWithStrings() {  			JID testling("foo", "bar", "baz"); @@ -170,6 +171,12 @@ class JIDTest : public CppUnit::TestFixture  			CPPUNIT_ASSERT(!testling.isValid());  		} +		void testConstructorWithStrings_EmptyResource() { +			JID testling("foo", "bar", ""); + +			CPPUNIT_ASSERT(!testling.isValid()); +		} +  		void testIsBare() {  			CPPUNIT_ASSERT(JID("foo@bar").isBare());  		} | 
 Swift
 Swift