From fe38d7cbbaaac38afc15e53b88fa98fd295d3bc9 Mon Sep 17 00:00:00 2001 From: Ramana Reddy Date: Fri, 5 May 2023 18:58:39 +0530 Subject: [PATCH 1/2] fix removing semicolon while decoding params --- url/rawparam.go | 2 ++ url/rawparam_test.go | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/url/rawparam.go b/url/rawparam.go index 720f415..741715e 100644 --- a/url/rawparam.go +++ b/url/rawparam.go @@ -132,7 +132,9 @@ func (p Params) Decode(raw string) { if AllowLegacySeperator { arr = append(arr, tbuff.String()) tbuff.Reset() + continue } + tbuff.WriteRune(v) default: tbuff.WriteRune(v) } diff --git a/url/rawparam_test.go b/url/rawparam_test.go index 1d38008..dd7d3f0 100644 --- a/url/rawparam_test.go +++ b/url/rawparam_test.go @@ -100,3 +100,20 @@ func TestURLEncode(t *testing.T) { require.Equalf(t, expected, got, "url encoding mismatch for non-printable char with ascii val:%v", r) } } + +func TestURLDecode(t *testing.T) { + testcases := []struct { + raw string + Expected Params + }{ + { + "/ctc/servlet/ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=tasklist", + Params{"/ctc/servlet/ConfigServlet?param": []string{"com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=tasklist"}}, + }, + } + for _, v := range testcases { + params := make(Params) + params.Decode(v.raw) + require.Equalf(t, v.Expected, params, "failed to decode params %v expected %v got %v", v.raw, v.Expected, params) + } +} From 287c6e386c20407e28829a0a1a1ebc1041bc90f8 Mon Sep 17 00:00:00 2001 From: Tarun Koyalwar Date: Fri, 5 May 2023 20:02:13 +0530 Subject: [PATCH 2/2] fix unit test --- url/rawparam_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/url/rawparam_test.go b/url/rawparam_test.go index dd7d3f0..725ec3b 100644 --- a/url/rawparam_test.go +++ b/url/rawparam_test.go @@ -103,17 +103,17 @@ func TestURLEncode(t *testing.T) { func TestURLDecode(t *testing.T) { testcases := []struct { - raw string + url string Expected Params }{ { "/ctc/servlet/ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=tasklist", - Params{"/ctc/servlet/ConfigServlet?param": []string{"com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=tasklist"}}, + Params{"param": []string{"com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=tasklist"}}, }, } for _, v := range testcases { - params := make(Params) - params.Decode(v.raw) - require.Equalf(t, v.Expected, params, "failed to decode params %v expected %v got %v", v.raw, v.Expected, params) + parsed, err := Parse(v.url) + require.Nilf(t, err, "failed to parse url %v", v.url) + require.Equalf(t, v.Expected, parsed.Query(), "failed to decode params in url %v expected %v got %v", v.url, v.Expected, parsed.Query()) } }