From fcaeb69ec8e96057423f7dadd52e116e29b80cae Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Mon, 11 Apr 2022 20:25:17 -0700 Subject: [PATCH] More accurate escaping and quoting for debug commands in terminal. Fix #145265 --- src/vs/workbench/contrib/debug/node/terminals.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/debug/node/terminals.ts b/src/vs/workbench/contrib/debug/node/terminals.ts index c27c88f27a6..5f89e708bc7 100644 --- a/src/vs/workbench/contrib/debug/node/terminals.ts +++ b/src/vs/workbench/contrib/debug/node/terminals.ts @@ -121,7 +121,7 @@ export function prepareCommand(shell: string, args: string[], cwd?: string, env? quote = (s: string) => { s = s.replace(/\"/g, '""'); - return (s.indexOf(' ') >= 0 || s.indexOf('"') >= 0 || s.length === 0) ? `"${s}"` : s; + return (' "> s.includes(char)) || s.length === 0) ? `"${s}"` : s; }; if (cwd) { @@ -154,8 +154,8 @@ export function prepareCommand(shell: string, args: string[], cwd?: string, env? case ShellType.bash: { quote = (s: string) => { - s = s.replace(/(["'\\\$])/g, '\\$1'); - return (s.indexOf(' ') >= 0 || s.indexOf(';') >= 0 || s.length === 0) ? `"${s}"` : s; + s = s.replace(/(["'\\\$!><#()\[\]*&^])/g, '\\$1'); + return (' ;'.split('').some(char => s.includes(char)) || s.length === 0) ? `"${s}"` : s; }; const hardQuote = (s: string) => {