From 3b2143bafc8daeb3a5e77b611b5b5d2060bbdfbe Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sat, 28 Nov 2015 00:07:03 +0100 Subject: diriv: fix readdir It decrypted all file names using the root directory iv --- pathfs_frontend/fs.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'pathfs_frontend') diff --git a/pathfs_frontend/fs.go b/pathfs_frontend/fs.go index c2b80a3..d999632 100644 --- a/pathfs_frontend/fs.go +++ b/pathfs_frontend/fs.go @@ -89,7 +89,15 @@ func (fs *FS) OpenDir(dirName string, context *fuse.Context) ([]fuse.DirEntry, f // silently ignore "gocryptfs.diriv" everywhere if dirIV is enabled continue } - name, err := fs.decryptPath(cName) + var name string + if !fs.dirIV { + name, err = fs.decryptPath(cName) + } else { + // When dirIV is enabled we need the full path to be able to decrypt it + cPath := filepath.Join(cDirName, cName) + name, err = fs.decryptPath(cPath) + name = filepath.Base(name) + } if err != nil { cryptfs.Warn.Printf("Invalid name \"%s\" in dir \"%s\": %s\n", cName, dirName, err) continue -- cgit v1.2.3