diff options
author | gVisor bot <gvisor-bot@google.com> | 2019-06-13 22:53:30 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-06-13 22:53:30 +0000 |
commit | 82f69f0f330b81468adfb43726cf60c1ad8b16b7 (patch) | |
tree | 6743a3c5ec577eab23373089b2f7c519fcc1447e /runsc/boot/loader.go | |
parent | 725c0ef4c730536249922fce3acd45d442c7e120 (diff) | |
parent | 4fdd560b76dfe4e3df83a8cba5a070ce7142b433 (diff) |
Merge 4fdd560b (automated)
Diffstat (limited to 'runsc/boot/loader.go')
-rw-r--r-- | runsc/boot/loader.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/runsc/boot/loader.go b/runsc/boot/loader.go index c1dea736f..ff7009d30 100644 --- a/runsc/boot/loader.go +++ b/runsc/boot/loader.go @@ -20,6 +20,7 @@ import ( mrand "math/rand" "os" "runtime" + "strings" "sync" "sync/atomic" "syscall" @@ -534,6 +535,24 @@ func (l *Loader) run() error { return err } + // Read /etc/passwd for the user's HOME directory and set the HOME + // environment variable as required by POSIX if it is not overridden by + // the user. + hasHomeEnvv := false + for _, envv := range l.rootProcArgs.Envv { + if strings.HasPrefix(envv, "HOME=") { + hasHomeEnvv = true + } + } + if !hasHomeEnvv { + homeDir, err := getExecUserHome(rootCtx, rootMns, uint32(l.rootProcArgs.Credentials.RealKUID)) + if err != nil { + return fmt.Errorf("error reading exec user: %v", err) + } + + l.rootProcArgs.Envv = append(l.rootProcArgs.Envv, "HOME="+homeDir) + } + // Create the root container init task. It will begin running // when the kernel is started. if _, _, err := l.k.CreateProcess(l.rootProcArgs); err != nil { |