mirror of
https://github.com/golang/go
synced 2024-11-18 03:14:44 -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:
parent
7833302a62
commit
b284dac232
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user