Skip to content

Commit 6c2bcc6

Browse files
wkinglifubang
authored andcommitted
libcontainer/configs/config: Clear hook environ variables on empty Env
The runtime spec has [1]: * env (array of strings, OPTIONAL) with the same semantics as IEEE Std 1003.1-2008's environ. And running execle or similar with NULL env results in an empty environent: $ cat test.c #include <unistd.h> int main() { return execle("/usr/bin/env", "env", NULL, NULL); } $ cc -o test test.c $ ./test ...no output... Go's Cmd.Env, on the other hand, has [2]: If Env is nil, the new process uses the current process's environment. This commit works around that by setting Env to an empty slice in those cases to avoid leaking the runtime environment into the hooks. [1]: https://github.com/opencontainers/runtime-spec/blob/v1.0.1/config.md#posix-platform-hooks [2]: https://golang.org/pkg/os/exec/#Cmd Signed-off-by: W. Trevor King <wking@tremily.us> (cherry picked from commit c11bd33) Signed-off-by: lfbzhm <lifubang@acmcoder.com>
1 parent 4cb480d commit 6c2bcc6

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

libcontainer/configs/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,9 @@ func (c Command) Run(s *specs.State) error {
480480
Stdout: &stdout,
481481
Stderr: &stderr,
482482
}
483+
if cmd.Env == nil {
484+
cmd.Env = []string{}
485+
}
483486
if err := cmd.Start(); err != nil {
484487
return err
485488
}

0 commit comments

Comments
 (0)