1
0
mirror of https://github.com/golang/go synced 2024-11-23 13:10:15 -07:00

syscall: fix Clearenv on Plan 9

Update #25234
Fixes #35083

Change-Id: Ida39516ab1c14a34a62c2232476a75e83f4e3f75
Reviewed-on: https://go-review.googlesource.com/c/go/+/202657
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Fazlul Shahriar 2019-10-21 12:18:27 -04:00 committed by Brad Fitzpatrick
parent 7833302a62
commit b284dac232

View File

@ -74,7 +74,21 @@ func Setenv(key, value string) error {
}
func Clearenv() {
RawSyscall(SYS_RFORK, RFCENVG, 0, 0)
// Creating a new environment group using rfork(RFCENVG) can race
// with access to files in /env (e.g. from Setenv or Getenv).
// Remove all environment variables in current environment group instead.
fd, err := open("/env", O_RDONLY)
if err != nil {
return
}
defer Close(fd)
files, err := readdirnames(fd)
if err != nil {
return
}
for _, key := range files {
Remove("/env/" + key)
}
}
func Unsetenv(key string) error {