Skip to content

Commit d9fee7c

Browse files
Reject unsafe backticks in PowerShell environment variable names
1 parent 853897b commit d9fee7c

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

‎pkg/util/shellutil/tokenswap.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ func encodeEnvVarsForPowerShell(env map[string]string) (string, error) {
125125
var encoded string
126126
for k, v := range env {
127127
// PowerShell's braced environment-variable syntax supports Windows names
128-
// such as ProgramFiles(x86), but a closing brace cannot be represented.
129-
if k == "" || strings.Contains(k, "}") {
128+
// such as ProgramFiles(x86), but backticks and closing braces cannot be represented safely.
129+
if k == "" || strings.ContainsAny(k, "}`") {
130130
return "", fmt.Errorf("invalid env var name: %q", k)
131131
}
132132
encoded += fmt.Sprintf("${env:%s} = %s\n", k, HardQuotePowerShell(v))

‎pkg/util/shellutil/tokenswap_test.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func TestEncodeEnvVarsForPowerShell(t *testing.T) {
4646
}
4747

4848
func TestEncodeEnvVarsForPowerShellRejectsUnrepresentableNames(t *testing.T) {
49-
for _, name := range []string{"", "invalid}name"} {
49+
for _, name := range []string{"", "invalid}name", "FOO`"} {
5050
t.Run(name, func(t *testing.T) {
5151
if _, err := EncodeEnvVarsForShell(ShellType_pwsh, map[string]string{name: "value"}); err == nil {
5252
t.Errorf("EncodeEnvVarsForShell() accepted unrepresentable name %q", name)

0 commit comments

Comments
 (0)