]> granicus.if.org Git - icinga2/commitdiff
Fix URL encoding for '&'
authorGunnar Beutner <gunnar.beutner@netways.de>
Mon, 25 Jul 2016 08:54:17 +0000 (10:54 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 25 Jul 2016 08:54:17 +0000 (10:54 +0200)
fixes #12199

lib/remote/url-characters.hpp
lib/remote/url.cpp

index c44614f50b6087b553177f268a70f660e015e352..a2a08840180a8f7f91c155f56fcabca68ea548c3 100644 (file)
@@ -26,8 +26,8 @@
 #define UNRESERVED ALPHA NUMERIC "-._~" "%"
 #define GEN_DELIMS ":/?#[]@"
 #define SUB_DELIMS "!$&'()*+,;="
-#define RESERVED GEN_DELIMS SUB-DELIMS
 #define PCHAR UNRESERVED SUB_DELIMS ":@"
+#define PCHAR_ENCODE UNRESERVED ":@"
 
 #define ACSCHEME ALPHA NUMERIC ".-+"
 
 #define ACPORT NUMERIC
 
 #define ACPATHSEGMENT PCHAR
+#define ACPATHSEGMENT_ENCODE PCHAR_ENCODE
 #define ACQUERY PCHAR "/?"
+#define ACQUERY_ENCODE PCHAR_ENCODE "/?"
 #define ACFRAGMENT PCHAR "/?"
+#define ACFRAGMENT_ENCODE PCHAR_ENCODE "/?"
 
 #endif /* URL_CHARACTERS_H */
index c736f8df3edbd8ae1a3b4ca2fdbeb049643a5677..f79b1101e3188ae08799a68ef535a16f3a01bc38 100644 (file)
@@ -243,7 +243,7 @@ String Url::Format(bool print_credentials) const
        else {
                BOOST_FOREACH (const String& segment, m_Path) {
                        url += "/";
-                       url += Utility::EscapeString(segment, ACPATHSEGMENT, false);
+                       url += Utility::EscapeString(segment, ACPATHSEGMENT_ENCODE, false);
                }
        }
 
@@ -252,7 +252,7 @@ String Url::Format(bool print_credentials) const
                typedef std::pair<String, std::vector<String> > kv_pair;
 
                BOOST_FOREACH (const kv_pair& kv, m_Query) {
-                       String key = Utility::EscapeString(kv.first, ACQUERY, false);
+                       String key = Utility::EscapeString(kv.first, ACQUERY_ENCODE, false);
                        if (param.IsEmpty())
                                param = "?";
                        else
@@ -268,7 +268,7 @@ String Url::Format(bool print_credentials) const
                                if (kv.second.size() > 1)
                                        temp += "[]";
 
-                               temp += "=" + Utility::EscapeString(s, ACQUERY, false);
+                               temp += "=" + Utility::EscapeString(s, ACQUERY_ENCODE, false);
                        }
                        param += temp;
                }
@@ -277,7 +277,7 @@ String Url::Format(bool print_credentials) const
        url += param;
 
        if (!m_Fragment.IsEmpty())
-               url += "#" + Utility::EscapeString(m_Fragment, ACFRAGMENT, false);
+               url += "#" + Utility::EscapeString(m_Fragment, ACFRAGMENT_ENCODE, false);
 
        return url;
 }