64793fedf4
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
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package syscallcompat
|
|
|
|
import (
|
|
"os"
|
|
"syscall"
|
|
"testing"
|
|
)
|
|
|
|
func TestOpenNofollow(t *testing.T) {
|
|
err := os.MkdirAll(tmpDir+"/d1/d2/d3", 0700)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
// Create a file
|
|
dirfd, err := OpenDirNofollow(tmpDir, "d1/d2/d3")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
fd, err := Openat(dirfd, "f1", syscall.O_RDWR|syscall.O_CREAT|syscall.O_EXCL, 0600)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
syscall.Close(fd)
|
|
_, err = os.Stat(tmpDir + "/d1/d2/d3/f1")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
// Replace "d1" with a symlink - open should fail with ELOOP
|
|
err = os.Rename(tmpDir+"/d1", tmpDir+"/d1.renamed")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
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 {
|
|
t.Errorf("expected ELOOP or ENOTDIR, got %v", err)
|
|
}
|
|
// Check to see that the base dir can be opened as well
|
|
fd, err = OpenDirNofollow(tmpDir, "")
|
|
if err != nil {
|
|
t.Errorf("cannot open base dir: %v", err)
|
|
} else {
|
|
syscall.Close(fd)
|
|
}
|
|
}
|