From 507345d7e9f510fed5d70b84d890262614fce81e Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 29 Apr 2020 10:19:41 -0700 Subject: [PATCH] Correctly validate \\?\%VAR% format Var resolution isn't supported, but it will now be recognized as a absolute path and prevent broken links Fixes #94961 --- .../contrib/terminal/browser/links/terminalLinkManager.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts index 2eeb08c9d77..63946a0606d 100644 --- a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts +++ b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts @@ -37,7 +37,8 @@ const excludedPathCharactersClause = '[^\\0\\s!$`&*()\\[\\]+\'":;\\\\]'; /** A regex that matches paths in the form /foo, ~/foo, ./foo, ../foo, foo/bar */ const unixLocalLinkClause = '((' + pathPrefix + '|(' + excludedPathCharactersClause + ')+)?(' + pathSeparatorClause + '(' + excludedPathCharactersClause + ')+)+)'; -const winDrivePrefix = '(?:\\\\\\\\\\?\\\\)?[a-zA-Z]:'; +// Valid absolute formats: C:, \\?\C: and \\?\%VAR% +const winDrivePrefix = '(?:\\\\\\\\\\?\\\\)?([a-zA-Z]:|%)'; const winPathPrefix = '(' + winDrivePrefix + '|\\.\\.?|\\~)'; const winPathSeparatorClause = '(\\\\|\\/)'; const winExcludedPathCharactersClause = '[^\\0<>\\?\\|\\/\\s!$`&*()\\[\\]+\'":;]'; -- GitLab