diff options
| -rw-r--r-- | internal/fusefrontend_reverse/reverse_longnames.go | 2 | ||||
| -rw-r--r-- | internal/fusefrontend_reverse/rpath.go | 7 | 
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  			} | 
