]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.16] syscall: avoid writing to p when Pipe(p) fails
authorRuss Cox <rsc@golang.org>
Wed, 8 Dec 2021 23:06:41 +0000 (18:06 -0500)
committerFilippo Valsorda <filippo@golang.org>
Thu, 9 Dec 2021 12:28:59 +0000 (12:28 +0000)
commit99950270f3cf52cccc6966d8668ff21b573bb6f5
treee5892ff3760a98811d3eb69665c56e19d1a3bbd9
parent44a3fb49d99cc8a4de4925b69650f97bb07faf1d
[release-branch.go1.16] syscall: avoid writing to p when Pipe(p) fails

Generally speaking Go functions make no guarantees
about what has happened to result parameters on error,
and Pipe is no exception: callers should avoid looking at
p if Pipe returns an error.

However, we had a bug in which ForkExec was using the
content of p after a failed Pipe, and others may too.
As a robustness fix, make Pipe avoid writing to p on failure.

Updates #50057

Change-Id: Ie8955025dbd20702fabadc9bbe1d1a5ac0f36305
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/1291271
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/370515
Trust: Filippo Valsorda <filippo@golang.org>
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alex Rakoczy <alex@golang.org>
17 files changed:
src/syscall/syscall_aix.go
src/syscall/syscall_darwin.go
src/syscall/syscall_dragonfly.go
src/syscall/syscall_freebsd.go
src/syscall/syscall_linux_386.go
src/syscall/syscall_linux_amd64.go
src/syscall/syscall_linux_arm.go
src/syscall/syscall_linux_arm64.go
src/syscall/syscall_linux_mips64x.go
src/syscall/syscall_linux_mipsx.go
src/syscall/syscall_linux_ppc64x.go
src/syscall/syscall_linux_riscv64.go
src/syscall/syscall_linux_s390x.go
src/syscall/syscall_netbsd.go
src/syscall/syscall_openbsd.go
src/syscall/syscall_plan9.go
src/syscall/syscall_solaris.go