From 64793fedf4ac8eebe05c57af75877944c60f03a4 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Wed, 18 Aug 2021 15:47:17 +0200 Subject: Fix issues found by ineffassign gocryptfs$ ineffassign ./... /home/jakob/go/src/github.com/rfjakob/gocryptfs/internal/configfile/config_file.go:243:2: ineffectual assignment to scryptHash /home/jakob/go/src/github.com/rfjakob/gocryptfs/internal/configfile/config_file.go:272:2: ineffectual assignment to scryptHash /home/jakob/go/src/github.com/rfjakob/gocryptfs/internal/fusefrontend/file.go:285:3: ineffectual assignment to fileID /home/jakob/go/src/github.com/rfjakob/gocryptfs/internal/fusefrontend/node.go:367:3: ineffectual assignment to err /home/jakob/go/src/github.com/rfjakob/gocryptfs/internal/fusefrontend/node_open_create.go:68:2: ineffectual assignment to fd /home/jakob/go/src/github.com/rfjakob/gocryptfs/mount.go:308:2: ineffectual assignment to masterkey /home/jakob/go/src/github.com/rfjakob/gocryptfs/gocryptfs-xray/xray_main.go:156:13: ineffectual assignment to err /home/jakob/go/src/github.com/rfjakob/gocryptfs/internal/fusefrontend/prepare_syscall_test.go:65:16: ineffectual assignment to errno /home/jakob/go/src/github.com/rfjakob/gocryptfs/internal/syscallcompat/open_nofollow_test.go:34:2: ineffectual assignment to fd /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/defaults/acl_test.go:111:6: ineffectual assignment to err /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/defaults/acl_test.go:181:2: ineffectual assignment to sz /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/defaults/acl_test.go:198:2: ineffectual assignment to sz /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/defaults/main_test.go:365:8: ineffectual assignment to err /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/xattr/xattr_fd_test.go:30:6: ineffectual assignment to err /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/xattr/xattr_fd_test.go:66:6: ineffectual assignment to err --- internal/fusefrontend/file.go | 11 ++++------- internal/fusefrontend/node.go | 10 ++++++---- internal/fusefrontend/prepare_syscall_test.go | 4 ++-- internal/syscallcompat/open_nofollow_test.go | 1 + 4 files changed, 13 insertions(+), 13 deletions(-) (limited to 'internal') diff --git a/internal/fusefrontend/file.go b/internal/fusefrontend/file.go index 716a0db..ef043ae 100644 --- a/internal/fusefrontend/file.go +++ b/internal/fusefrontend/file.go @@ -277,16 +277,13 @@ func (f *File) Read(ctx context.Context, buf []byte, off int64) (resultData fuse // Empty writes do nothing and are allowed. func (f *File) doWrite(data []byte, off int64) (uint32, syscall.Errno) { fileWasEmpty := false - // Get the file ID, create a new one if it does not exist yet. - var fileID []byte // The caller has exclusively locked ContentLock, which blocks all other // readers and writers. No need to take IDLock. - if f.fileTableEntry.ID != nil { - fileID = f.fileTableEntry.ID - } else { - // If the file ID is not cached, read it from disk + // + // If the file ID is not cached, read it from disk + if f.fileTableEntry.ID == nil { var err error - fileID, err = f.readFileID() + fileID, err := f.readFileID() // Write a new file header if the file is empty if err == io.EOF { fileID, err = f.createHeader() diff --git a/internal/fusefrontend/node.go b/internal/fusefrontend/node.go index 8a3cfa2..7280624 100644 --- a/internal/fusefrontend/node.go +++ b/internal/fusefrontend/node.go @@ -354,23 +354,25 @@ func (n *Node) Symlink(ctx context.Context, target, name string, out *fuse.Entry if !rn.args.PlaintextNames && nametransform.IsLongContent(cName) { err = rn.nameTransform.WriteLongNameAt(dirfd, cName, name) if err != nil { - errno = fs.ToErrno(err) - return + return nil, fs.ToErrno(err) } // Create "gocryptfs.longfile." symlink err = syscallcompat.SymlinkatUser(cTarget, dirfd, cName, ctx2) if err != nil { nametransform.DeleteLongNameAt(dirfd, cName) + return nil, fs.ToErrno(err) } } else { // Create symlink err = syscallcompat.SymlinkatUser(cTarget, dirfd, cName, ctx2) + if err != nil { + return nil, fs.ToErrno(err) + } } st, err := syscallcompat.Fstatat2(dirfd, cName, unix.AT_SYMLINK_NOFOLLOW) if err != nil { - errno = fs.ToErrno(err) - return + return nil, fs.ToErrno(err) } // Report the plaintext size, not the encrypted blob size st.Size = int64(len(target)) diff --git a/internal/fusefrontend/prepare_syscall_test.go b/internal/fusefrontend/prepare_syscall_test.go index 28e655c..693f62a 100644 --- a/internal/fusefrontend/prepare_syscall_test.go +++ b/internal/fusefrontend/prepare_syscall_test.go @@ -63,8 +63,8 @@ func TestPrepareAtSyscall(t *testing.T) { syscall.Close(dirfd) dirfd, cName, errno = rn.prepareAtSyscall("dir1") - if err != nil { - t.Fatal(err) + if errno != 0 { + t.Fatal(errno) } if cName == "" { t.Fatal("cName should not be empty") diff --git a/internal/syscallcompat/open_nofollow_test.go b/internal/syscallcompat/open_nofollow_test.go index 1eeac3a..0d3ac3d 100644 --- a/internal/syscallcompat/open_nofollow_test.go +++ b/internal/syscallcompat/open_nofollow_test.go @@ -33,6 +33,7 @@ func TestOpenNofollow(t *testing.T) { os.Symlink(tmpDir+"/d1.renamed", tmpDir+"/d1") fd, err = OpenDirNofollow(tmpDir, "d1/d2/d3") if err == nil { + syscall.Close(fd) t.Fatalf("should have failed") } if err != syscall.ELOOP && err != syscall.ENOTDIR { -- cgit v1.2.3