diff options
author | Sebastian Lackner | 2017-11-28 00:20:42 +0100 |
---|---|---|
committer | rfjakob | 2017-11-28 09:28:06 +0100 |
commit | 3f68b0c09af2b3070346e27b384e80116e515f73 (patch) | |
tree | 2ea9b1491a7caa047572bfd184afe7528cf56433 | |
parent | 8c5069c6374778bab17cd640b2579c936c635fa7 (diff) |
fusefrontend: Handle PlaintextNames mode in Mknod
In PlaintextNames mode the "gocryptfs.longname." prefix does not have any
special meaning. We should not attempt to read the directory IV or to
create special .name files.
Partially fixes https://github.com/rfjakob/gocryptfs/issues/174
-rw-r--r-- | internal/fusefrontend/fs.go | 4 | ||||
-rw-r--r-- | tests/matrix/matrix_test.go | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/internal/fusefrontend/fs.go b/internal/fusefrontend/fs.go index 8f77538..05167df 100644 --- a/internal/fusefrontend/fs.go +++ b/internal/fusefrontend/fs.go @@ -287,9 +287,9 @@ func (fs *FS) Mknod(path string, mode uint32, dev uint32, context *fuse.Context) return fuse.ToStatus(err) } defer dirfd.Close() - // Create ".name" file to store long file name + // Create ".name" file to store long file name (except in PlaintextNames mode) cName := filepath.Base(cPath) - if nametransform.IsLongContent(cName) { + if !fs.args.PlaintextNames && nametransform.IsLongContent(cName) { err = fs.nameTransform.WriteLongName(dirfd, cName, path) if err != nil { return fuse.ToStatus(err) diff --git a/tests/matrix/matrix_test.go b/tests/matrix/matrix_test.go index 170f8ba..06c2e71 100644 --- a/tests/matrix/matrix_test.go +++ b/tests/matrix/matrix_test.go @@ -789,4 +789,9 @@ func TestMkfifo(t *testing.T) { if err != nil { t.Fatal(err) } + path = test_helpers.DefaultPlainDir + "/gocryptfs.longname.XXX" + err = syscall.Mkfifo(path, 0700) + if err != nil { + t.Fatal(err) + } } |