diff options
author | Richard Walters <rwalters@digitalstirling.com> | 2020-10-09 13:30:45 -0700 |
---|---|---|
committer | Richard Walters <rwalters@digitalstirling.com> | 2020-10-09 13:30:45 -0700 |
commit | 456ce952f2ba8e6cb9c63ee211b2fa7db49d9529 (patch) | |
tree | 3cae4aa6ad96283f2a1de94b9a0fc6e73a38b516 | |
parent | 87ae5a9f02cefc51fb24305ec79d37e4da40c4f0 (diff) |
Fix bug in parsing IPv6 addresses
Fix bug where an IPv6 address ending in a double-colon was
not considered valid (it was being considered as truncated).
-rw-r--r-- | src/Uri.cpp | 1 | ||||
-rw-r--r-- | src/lib.rs | 1 | ||||
-rw-r--r-- | test/src/UriTests.cpp | 1 |
3 files changed, 1 insertions, 2 deletions
diff --git a/src/Uri.cpp b/src/Uri.cpp index 3d8b4fa..2b15ede 100644 --- a/src/Uri.cpp +++ b/src/Uri.cpp @@ -370,7 +370,6 @@ namespace { (position == address.length()) && ( (state == ValidationState::COLON_BUT_NO_GROUPS_YET) - || (state == ValidationState::AFTER_COLON_EXPECT_GROUP_OR_IPV4) || (state == ValidationState::COLON_AFTER_GROUP) ) ) { // trailing single colon @@ -409,7 +409,6 @@ fn validate_ipv6_address(address: &str) -> Result<(), Error> { #[allow(unused_parens)] if ( (state == ValidationState::ColonButNoGroupsYet) - || (state == ValidationState::AfterColonExpectGroupOrIpv4) || (state == ValidationState::ColonAfterGroup) ) { // trailing single colon return Err(Error::IllegalCharacter); diff --git a/test/src/UriTests.cpp b/test/src/UriTests.cpp index e012627..df87093 100644 --- a/test/src/UriTests.cpp +++ b/test/src/UriTests.cpp @@ -733,6 +733,7 @@ TEST(UriTests, IPv6Address) { {"http://[fFfF::1]", "fFfF::1", true}, {"http://[1234::1]", "1234::1", true}, {"http://[fFfF:1:2:3:4:5:6:a]", "fFfF:1:2:3:4:5:6:a", true}, + {"http://[2001:db8:85a3:8a2e::]/", "2001:db8:85a3:8a2e::", true}, // invalid {"http://[::fFfF::1]", "", false}, |