From a983599e2bc8056baa28e27aab4d7ff4165b77e2 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 14 Oct 2022 16:44:35 +0200 Subject: [PATCH] sys: update volumePath regex to allow returning earlier The regex only matched volume paths without a trailing path-separator. In cases where a path would be passed with a trailing path-separator, it would depend on further code in mkdirall to strip the trailing slash, then to perform the regex again in the next iteration. While regexes aren't ideal, we're already executing this one, so we may as well use it to match those situations as well (instead of executing it twice), to allow us to return early. Signed-off-by: Sebastiaan van Stijn --- sys/filesys_windows.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/filesys_windows.go b/sys/filesys_windows.go index 019831958..47b74db2a 100644 --- a/sys/filesys_windows.go +++ b/sys/filesys_windows.go @@ -29,8 +29,9 @@ import ( const SddlAdministratorsLocalSystem = "D:P(A;OICI;GA;;;BA)(A;OICI;GA;;;SY)" // volumePath is a regular expression to check if a path is a Windows -// volume path (e.g., "\\?\Volume{4c1b02c1-d990-11dc-99ae-806e6f6e6963}". -var volumePath = regexp.MustCompile(`^\\\\\?\\Volume{[a-z0-9-]+}$`) +// volume path (e.g., "\\?\Volume{4c1b02c1-d990-11dc-99ae-806e6f6e6963}" +// or "\\?\Volume{4c1b02c1-d990-11dc-99ae-806e6f6e6963}\"). +var volumePath = regexp.MustCompile(`^\\\\\?\\Volume{[a-z0-9-]+}\\?$`) // MkdirAllWithACL is a custom version of os.MkdirAll modified for use on Windows // so that it is both volume path aware, and to create a directory