forked from Mirrors/oauth2
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:
parent
da3ce8d62a
commit
96382aa079
|
@ -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 ""
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue