mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
os: reject WriteAt if file opened in append mode
WriteAt use pwrite syscall on *nix or WriteFile on Windows. On Linux/Windows, these system calls always write to end of file in append mode, regardless of offset parameter. It is hard (maybe impossible) to make WriteAt work portably. Making WriteAt returns an error if file is opened in append mode, we guarantee to get consistent behavior between platforms, also prevent user from accidently corrupting their data. Fixes #30716 Change-Id: If83d935a22a29eed2ff8fe53d13d0b4798aa2b81 Reviewed-on: https://go-review.googlesource.com/c/go/+/166578 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
5ee2290420
commit
c7f7f59368
6 changed files with 39 additions and 7 deletions
|
|
@ -52,6 +52,7 @@ type file struct {
|
|||
dirinfo *dirInfo // nil unless directory being read
|
||||
nonblock bool // whether we set nonblocking mode
|
||||
stdoutOrErr bool // whether this is stdout or stderr
|
||||
appendMode bool // whether file is opened for appending
|
||||
}
|
||||
|
||||
// Fd returns the integer Unix file descriptor referencing the open file.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue