Commit b284dac2 authored by Fazlul Shahriar's avatar Fazlul Shahriar Committed by Brad Fitzpatrick

syscall: fix Clearenv on Plan 9

Update #25234
Fixes #35083

Change-Id: Ida39516ab1c14a34a62c2232476a75e83f4e3f75
Reviewed-on: https://go-review.googlesource.com/c/go/+/202657Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 7833302a
......@@ -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 {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment