Skip to content

Commit

Permalink
Use env varaibles for passing path
Browse files Browse the repository at this point in the history
The subpath could be passed a powershell subexpression which would be executed by kubelet with privilege.  Switching to pass the arguments via environment variables means the subexpression won't be evaluated.

Signed-off-by: James Sturtevant <jstur@microsoft.com>
  • Loading branch information
jsturtevant authored and ritazh committed Aug 23, 2023
1 parent c16b8f4 commit ae50193
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions pkg/volume/util/subpath/subpath_windows.go
Expand Up @@ -76,8 +76,10 @@ func getUpperPath(path string) string {
// Check whether a directory/file is a link type or not
// LinkType could be SymbolicLink, Junction, or HardLink
func isLinkPath(path string) (bool, error) {
cmd := fmt.Sprintf("(Get-Item -LiteralPath %q).LinkType", path)
output, err := exec.Command("powershell", "/c", cmd).CombinedOutput()
cmd := exec.Command("powershell", "/c", "$ErrorActionPreference = 'Stop'; (Get-Item -Force -LiteralPath $env:linkpath).LinkType")
cmd.Env = append(os.Environ(), fmt.Sprintf("linkpath=%s", path))
klog.V(8).Infof("Executing command: %q", cmd.String())
output, err := cmd.CombinedOutput()
if err != nil {
return false, err
}
Expand Down Expand Up @@ -114,8 +116,11 @@ func evalSymlink(path string) (string, error) {
}
}
// This command will give the target path of a given symlink
cmd := fmt.Sprintf("(Get-Item -LiteralPath %q).Target", upperpath)
output, err := exec.Command("powershell", "/c", cmd).CombinedOutput()
// The -Force parameter will allow Get-Item to also evaluate hidden folders, like AppData.
cmd := exec.Command("powershell", "/c", "$ErrorActionPreference = 'Stop'; (Get-Item -Force -LiteralPath $env:linkpath).Target")
cmd.Env = append(os.Environ(), fmt.Sprintf("linkpath=%s", upperpath))
klog.V(8).Infof("Executing command: %q", cmd.String())
output, err := cmd.CombinedOutput()
if err != nil {
return "", err
}
Expand Down

0 comments on commit ae50193

Please sign in to comment.