summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Maudsley <richard.maudsley@isode.com>2014-07-17 09:46:50 (GMT)
committerSwift Review <review@swift.im>2014-08-10 11:08:27 (GMT)
commit8ec22a9c5591584fd1725ed028d714c51b7509d3 (patch)
tree3687e7023696c9e790a24fd54b7d04f14ac58ab2 /Swiften/TLS/ServerIdentityVerifier.cpp
parent5e9e715e49a5ddb6ce9c76ec61e7ecfd6eacdb58 (diff)
downloadswift-8ec22a9c5591584fd1725ed028d714c51b7509d3.zip
swift-8ec22a9c5591584fd1725ed028d714c51b7509d3.tar.bz2
Fix invalid characters being allowed in JID domains
Test-Information: Prepare valid and invalid JIDs and make sure that isValid() is reported correctly. Added unit tests. Change-Id: Ic4d86f8b6ea9defc517ada2f8e3cc54979237cf4
Diffstat (limited to 'Swiften/TLS/ServerIdentityVerifier.cpp')
-rw-r--r--Swiften/TLS/ServerIdentityVerifier.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/Swiften/TLS/ServerIdentityVerifier.cpp b/Swiften/TLS/ServerIdentityVerifier.cpp
index 02459b9..0608a03 100644
--- a/Swiften/TLS/ServerIdentityVerifier.cpp
+++ b/Swiften/TLS/ServerIdentityVerifier.cpp
@@ -13,9 +13,13 @@
namespace Swift {
-ServerIdentityVerifier::ServerIdentityVerifier(const JID& jid, IDNConverter* idnConverter) {
+ServerIdentityVerifier::ServerIdentityVerifier(const JID& jid, IDNConverter* idnConverter) : domainValid(false) {
domain = jid.getDomain();
- encodedDomain = idnConverter->getIDNAEncoded(domain);
+ boost::optional<std::string> domainResult = idnConverter->getIDNAEncoded(domain);
+ if (!!domainResult) {
+ encodedDomain = *domainResult;
+ domainValid = true;
+ }
}
bool ServerIdentityVerifier::certificateVerifies(Certificate::ref certificate) {
@@ -67,6 +71,9 @@ bool ServerIdentityVerifier::certificateVerifies(Certificate::ref certificate) {
}
bool ServerIdentityVerifier::matchesDomain(const std::string& s) const {
+ if (!domainValid) {
+ return false;
+ }
if (boost::starts_with(s, "*.")) {
std::string matchString(s.substr(2, s.npos));
std::string matchDomain = encodedDomain;