From 3f0761af9288ecbadcaa9f646b864991b9819792 Mon Sep 17 00:00:00 2001 From: Will Scott Date: Sat, 27 Feb 2021 09:57:58 -0800 Subject: [PATCH] open file for write when truncating fix #19 --- file.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/file.go b/file.go index 0f0a232..9d22651 100644 --- a/file.go +++ b/file.go @@ -3,6 +3,7 @@ package nfs import ( "io" "log" + "math" "os" "time" @@ -234,10 +235,13 @@ func (s *SetFileAttributes) Apply(changer billy.Change, fs billy.Filesystem, fil if curr.Mode()&os.ModeSymlink != 0 { return &NFSStatusError{NFSStatusNotSupp, os.ErrInvalid} } - fp, err := fs.Open(file) + fp, err := fs.OpenFile(file, os.O_WRONLY|os.O_EXCL, 0) if err != nil { return err } + if *s.SetSize > math.MaxInt64 { + return &NFSStatusError{NFSStatusInval, os.ErrInvalid} + } if err := fp.Truncate(int64(*s.SetSize)); err != nil { return err }