diff options
author | Joanna Hulboj <joanna.hulboj@isode.com> | 2019-10-03 08:11:09 (GMT) |
---|---|---|
committer | Joanna Hulboj <joanna.hulboj@isode.com> | 2019-10-03 09:09:08 (GMT) |
commit | df07a5e1e654c5fe4b513b8b0e41a392e9955cdf (patch) | |
tree | e864e06a81c85bb1876c59a2f7107a443ed0cc75 /Swiften/JID/JID.cpp | |
parent | 6f5fa6a02eb7502a15afab70c91451b8142e2ac3 (diff) | |
download | swift-df07a5e1e654c5fe4b513b8b0e41a392e9955cdf.zip swift-df07a5e1e654c5fe4b513b8b0e41a392e9955cdf.tar.bz2 |
Treat numeric domain JID as invalid
DomainJID consisting of only numbers is not treated as valid.
Test-information:
Unit tests pass on Windows 10 and Ubuntu 18.04.1 LTS.
Change-Id: If23ba8b8ea2a3c72d6f6e3acec4f587166c14e61
Diffstat (limited to 'Swiften/JID/JID.cpp')
-rw-r--r-- | Swiften/JID/JID.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Swiften/JID/JID.cpp b/Swiften/JID/JID.cpp index 5c6ea9d..a584b79 100644 --- a/Swiften/JID/JID.cpp +++ b/Swiften/JID/JID.cpp @@ -129,8 +129,10 @@ void JID::nameprepAndSetComponents(const std::string& node, const std::string& d } const auto isAnyOfNonNumericAndNotDot = std::any_of(std::begin(domain), std::end(domain), [](char c) {return !::isdigit(c) && c != '.'; }); + const auto isDomainAllNumeric = std::all_of(std::begin(domain), std::end(domain), [](char c) {return ::isdigit(c) ; }); - if (!isAnyOfNonNumericAndNotDot) { + //Prevent Windows validating non-dotted integers as OK if it can unpack them + if (!isAnyOfNonNumericAndNotDot && !isDomainAllNumeric) { auto hostAddress = HostAddress::fromString(domain); if (hostAddress && hostAddress->isValid()) { setComponents(node, domain, resource); |