From 48a4b4f8c2cd27f4cef263d6cf90aa3cb79a986a Mon Sep 17 00:00:00 2001 From: Fedor Date: Sat, 9 May 2020 00:36:35 +0300 Subject: [PATCH] [devtools] Port various upstream fixes. --- devtools/client/shared/curl.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/devtools/client/shared/curl.js b/devtools/client/shared/curl.js index d9abf506a..5ce9e96bb 100644 --- a/devtools/client/shared/curl.js +++ b/devtools/client/shared/curl.js @@ -91,7 +91,7 @@ const Curl = { if (utils.isUrlEncodedRequest(data) || ["PUT", "POST", "PATCH"].includes(data.method)) { postDataText = data.postDataText; - addPostData("--data"); + addPostData("--data-raw"); addPostData(utils.writePostDataTextParams(postDataText)); ignoredHeaders.add("content-length"); } else if (multipartRequest) { @@ -400,7 +400,12 @@ const CurlUtils = { * Credit: Google DevTools */ escapeStringWin: function (str) { - /* Replace quote by double quote (but not by \") because it is + /* + Replace dollar sign because of commands (e.g $(cmd.exe)) in + powershell when using double quotes. + Useful details http://www.rlmueller.net/PowerShellEscape.htm + + Replace quote by double quote (but not by \") because it is recognized by both cmd.exe and MS Crt arguments parser. Replace % by "%" because it could be expanded to an environment @@ -414,7 +419,8 @@ const CurlUtils = { Replace new line outside of quotes since cmd.exe doesn't let to do it inside. */ - return "\"" + str.replace(/"/g, "\"\"") + return "\"" + str.replace(/\$/g, "`$") + .replace(/"/g, "\"\"") .replace(/%/g, "\"%\"") .replace(/\\/g, "\\\\") .replace(/[\r\n]+/g, "\"^$&\"") + "\"";