From bfda0e962b90019ed616ab7e8194e2c0bc1136e2 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Wed, 9 Oct 2024 17:09:50 +0200 Subject: [PATCH] html: fix url_escape When used in URLs to be passed to a browser, strings MUST NOT contain +. We must escape + too, otherwise browsers converts it to a space or %20, which does not represent the original value anymore. Signed-off-by: Simon Rozman --- include/stdex/html.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/stdex/html.hpp b/include/stdex/html.hpp index 34240101d..bc23a0bff 100644 --- a/include/stdex/html.hpp +++ b/include/stdex/html.hpp @@ -312,7 +312,7 @@ namespace stdex stdex_assert(src || !num_chars); for (size_t i = 0; i < num_chars && src[i]; ++i) { switch (src[i]) { - case ' ': dst += "+"; break; + case ' ': dst += "%20"; break; case '<': dst += "%3C"; break; case '>': dst += "%3E"; break; case '#': dst += "%23"; break; @@ -327,6 +327,7 @@ namespace stdex case ']': dst += "%5D"; break; case '`': dst += "%60"; break; case ';': dst += "%3B"; break; + case '+': dst += "%2B"; break; case '/': dst += "%2F"; break; case '?': dst += "%3F"; break; case ':': dst += "%3A"; break;