google: prefer os.Getenv("HOME") over os/user.Current() so as to avoid SEGV

Due to an issue in handling thread-local storages, os/user can lead to SEGV
when glibc is statically linked with.

So we prefer os.Getenv("HOME") for guessing where is the home directory.

See also: golang/go#13470

Change-Id: I1046ff93a71aa3b11299f7e6cf65ff7b1fb07eb9
Reviewed-on: https://go-review.googlesource.com/34175
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Akihiro Suda 2016-12-13 06:27:07 +00:00 committed by Brad Fitzpatrick
parent da3ce8d62a
commit 96382aa079
1 changed files with 8 additions and 4 deletions

View File

@ -160,9 +160,13 @@ var sdkConfigPath = func() (string, error) {
} }
func guessUnixHomeDir() string { func guessUnixHomeDir() string {
usr, err := user.Current() // Prefer $HOME over user.Current due to glibc bug: golang.org/issue/13470
if err == nil { if v := os.Getenv("HOME"); v != "" {
return usr.HomeDir return v
} }
return os.Getenv("HOME") // Else, fall back to user.Current:
if u, err := user.Current(); err == nil {
return u.HomeDir
}
return ""
} }