Skip to content

Commit 03c7d6c

Browse files
authored
Distributed: fix syntax check of environment variable names (#38577)
- previous code accidentally checked `ENV` instead of `env` - now separate `env` checks for POSIX shell and `cmd.exe`, which have quite different format constraints for their environment variable names
1 parent c43c07f commit 03c7d6c

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

stdlib/Distributed/src/managers.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,6 @@ function launch_on_machine(manager::SSHManager, machine::AbstractString, cnt, pa
258258
env[var] = ENV[var]
259259
end
260260
end
261-
for var in keys(ENV)
262-
occursin(r"^[a-zA-Z0-9_]+$", var) || throw(ArgumentError(var))
263-
end
264261

265262
# Julia process with passed in command line flag arguments
266263
if shell == :posix
@@ -269,6 +266,8 @@ function launch_on_machine(manager::SSHManager, machine::AbstractString, cnt, pa
269266
cmds = "$(shell_escape_posixly(exename)) $(shell_escape_posixly(exeflags))"
270267
# set environment variables
271268
for (var, val) in env
269+
occursin(r"^[a-zA-Z_][a-zA-Z_0-9]*\z", var) ||
270+
throw(ArgumentError("invalid env key $var"))
272271
cmds = "export $(var)=$(shell_escape_posixly(val))\n$cmds"
273272
end
274273
# change working directory
@@ -290,6 +289,7 @@ function launch_on_machine(manager::SSHManager, machine::AbstractString, cnt, pa
290289
end
291290
# set environment variables
292291
for (var, val) in env
292+
occursin(r"^[a-zA-Z0-9_()[\]{}\$\\/#',;\.@!?*+-]+\z", var) || throw(ArgumentError("invalid env key $var"))
293293
remotecmd = "set $(var)=$(shell_escape_wincmd(val))&& $remotecmd"
294294
end
295295

0 commit comments

Comments
 (0)