From 82d477009dff0a52b3b24ff8f5666044d1249350 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Tue, 17 Jan 2023 19:17:26 +0400 Subject: [PATCH] '#' is a URI delimiter symbol --- src/tools/stringTools.cpp | 1 + test/stringTools.cpp | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/tools/stringTools.cpp b/src/tools/stringTools.cpp index 8e81d1cf..021db592 100644 --- a/src/tools/stringTools.cpp +++ b/src/tools/stringTools.cpp @@ -177,6 +177,7 @@ bool isReservedUrlChar(char c) case '=': case '+': case '$': + case '#': return true; default: return false; diff --git a/test/stringTools.cpp b/test/stringTools.cpp index 25226441..46251766 100644 --- a/test/stringTools.cpp +++ b/test/stringTools.cpp @@ -111,10 +111,9 @@ namespace URLEncoding const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; const char digits[] = "0123456789"; const char nonEncodableSymbols[] = ".-_~()*!"; -const char uriDelimSymbols[] = ":/@?=+&$;,"; +const char uriDelimSymbols[] = ":/@?=+&#$;,"; -// XXX: # should belong to uriDelimSymbols! -const char otherSymbols[] = R"(`#%^[]{}\|"<>)"; +const char otherSymbols[] = R"(`%^[]{}\|"<>)"; const char whitespace[] = " \n\t\r"; @@ -136,9 +135,9 @@ TEST(stringTools, urlEncode) EXPECT_EQ(urlEncode(nonEncodableSymbols, true), nonEncodableSymbols); EXPECT_EQ(urlEncode(uriDelimSymbols), uriDelimSymbols); - EXPECT_EQ(urlEncode(uriDelimSymbols, true), "%3A%2F%40%3F%3D%2B%26%24%3B%2C"); + EXPECT_EQ(urlEncode(uriDelimSymbols, true), "%3A%2F%40%3F%3D%2B%26%23%24%3B%2C"); - EXPECT_EQ(urlEncode(otherSymbols), "%60%23%25%5E%5B%5D%7B%7D%5C%7C%22%3C%3E"); + EXPECT_EQ(urlEncode(otherSymbols), "%60%25%5E%5B%5D%7B%7D%5C%7C%22%3C%3E"); EXPECT_EQ(urlEncode(otherSymbols), urlEncode(otherSymbols, true)); EXPECT_EQ(urlEncode(whitespace), "%20%0A%09%0D");