summaryrefslogtreecommitdiff
path: root/internal/fusefrontend_reverse
diff options
context:
space:
mode:
Diffstat (limited to 'internal/fusefrontend_reverse')
-rw-r--r--internal/fusefrontend_reverse/reverse_longnames.go2
-rw-r--r--internal/fusefrontend_reverse/rpath.go7
2 files changed, 6 insertions, 3 deletions
diff --git a/internal/fusefrontend_reverse/reverse_longnames.go b/internal/fusefrontend_reverse/reverse_longnames.go
index 96fa613..0234397 100644
--- a/internal/fusefrontend_reverse/reverse_longnames.go
+++ b/internal/fusefrontend_reverse/reverse_longnames.go
@@ -11,6 +11,7 @@ import (
"github.com/hanwen/go-fuse/fuse/nodefs"
"github.com/rfjakob/gocryptfs/internal/nametransform"
+ "github.com/rfjakob/gocryptfs/internal/tlog"
)
const (
@@ -49,6 +50,7 @@ func (rfs *ReverseFS) findLongnameParent(dir string, dirIV []byte, longname stri
absDir := filepath.Join(rfs.args.Cipherdir, dir)
dirfd, err := os.Open(absDir)
if err != nil {
+ tlog.Warn.Printf("findLongnameParent: opendir failed: %v\n", err)
return "", err
}
dirEntries, err := dirfd.Readdirnames(-1)
diff --git a/internal/fusefrontend_reverse/rpath.go b/internal/fusefrontend_reverse/rpath.go
index 2740104..0da40bb 100644
--- a/internal/fusefrontend_reverse/rpath.go
+++ b/internal/fusefrontend_reverse/rpath.go
@@ -52,9 +52,9 @@ func (rfs *ReverseFS) decryptPath(relPath string) (string, error) {
parts := strings.Split(relPath, "/")
for i, part := range parts {
// Start at the top and recurse
- currentDir := filepath.Join(parts[:i]...)
+ currentCipherDir := filepath.Join(parts[:i]...)
nameType := nametransform.NameType(part)
- dirIV := derivePathIV(currentDir, ivPurposeDirIV)
+ dirIV := derivePathIV(currentCipherDir, ivPurposeDirIV)
var transformedPart string
if nameType == nametransform.LongNameNone {
transformedPart, err = rfs.nameTransform.DecryptName(part, dirIV)
@@ -74,7 +74,8 @@ func (rfs *ReverseFS) decryptPath(relPath string) (string, error) {
return "", err
}
} else if nameType == nametransform.LongNameContent {
- transformedPart, err = rfs.findLongnameParent(currentDir, dirIV, part)
+ currentPlainDir := filepath.Join(transformedParts[:i]...)
+ transformedPart, err = rfs.findLongnameParent(currentPlainDir, dirIV, part)
if err != nil {
return "", err
}