diff options
-rw-r--r-- | src/vmime/utility/url.cpp | 2 | ||||
-rw-r--r-- | tests/utility/urlTest.cpp | 13 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/vmime/utility/url.cpp b/src/vmime/utility/url.cpp index 334e78fc..e8978d28 100644 --- a/src/vmime/utility/url.cpp +++ b/src/vmime/utility/url.cpp @@ -180,7 +180,7 @@ static bool extractHostIPv6(string& hostPart, string& host, string& port) { host.assign(&hostPart[1], len - 1); - if (hostPart[len] == '\0') { + if (hostPart[len + 1] == '\0') { return true; } if (hostPart[len + 1] != ':') { diff --git a/tests/utility/urlTest.cpp b/tests/utility/urlTest.cpp index c792c772..aca8300e 100644 --- a/tests/utility/urlTest.cpp +++ b/tests/utility/urlTest.cpp @@ -35,7 +35,8 @@ VMIME_TEST_SUITE_BEGIN(urlTest) VMIME_TEST(testParse3) VMIME_TEST(testParse4) VMIME_TEST(testParse5) - VMIME_TEST(testParseIPv6) + VMIME_TEST(testParseIPv6Full) + VMIME_TEST(testParseIPv6NoPort) VMIME_TEST(testGenerate) VMIME_TEST(testUtilsEncode) VMIME_TEST(testUtilsDecode) @@ -202,7 +203,7 @@ VMIME_TEST_SUITE_BEGIN(urlTest) VASSERT_EQ("4", "myserver.com", u1.getHost()); } - void testParseIPv6() { + void testParseIPv6Full() { vmime::utility::url u1("", ""); @@ -214,6 +215,14 @@ VMIME_TEST_SUITE_BEGIN(urlTest) VASSERT_EQ("6", "/p", u1.getPath()); } + void testParseIPv6NoPort() { + + vmime::utility::url u1("", ""); + + VASSERT_EQ("1", true, parseHelper(u1, "http://[::1]/")); + VASSERT_EQ("2", "::1", u1.getHost()); + } + void testGenerate() { vmime::utility::url u1("proto", "host", 12345, "path", "user", "password"); |