Skip to content

Commit

Permalink
google: prefer os.Getenv("HOME") over os/user.Current() so as to avoi…
Browse files Browse the repository at this point in the history
…d 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>
  • Loading branch information
AkihiroSuda authored and bradfitz committed Dec 13, 2016
1 parent da3ce8d commit 96382aa
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions google/sdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,13 @@ var sdkConfigPath = func() (string, error) {
}

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

0 comments on commit 96382aa

Please sign in to comment.