From 84ed139cd2cede9b773fe7892a0bc2515fc1f00f Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sun, 2 Aug 2020 19:33:12 +0200 Subject: v2api/reverse: implement Lookup for longname --- internal/fusefrontend_reverse/rpath.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'internal/fusefrontend_reverse/rpath.go') diff --git a/internal/fusefrontend_reverse/rpath.go b/internal/fusefrontend_reverse/rpath.go index 35b9361..d212dfc 100644 --- a/internal/fusefrontend_reverse/rpath.go +++ b/internal/fusefrontend_reverse/rpath.go @@ -47,11 +47,20 @@ func (rfs *RootNode) rDecryptName(cName string, dirIV []byte, pDir string) (pNam return "", err } } else if nameType == nametransform.LongNameContent { - panic("todo") - //pName, err = rfs.findLongnameParent(pDir, dirIV, cName) + dirfd, err := syscallcompat.OpenDirNofollow(rfs.args.Cipherdir, filepath.Dir(pDir)) if err != nil { return "", err } + defer syscall.Close(dirfd) + fd, err := syscallcompat.Openat(dirfd, filepath.Base(pDir), syscall.O_RDONLY|syscall.O_DIRECTORY|syscall.O_NOFOLLOW, 0) + if err != nil { + return "", err + } + var errno syscall.Errno + pName, _, errno = rfs.findLongnameParent(fd, dirIV, cName) + if errno != 0 { + return "", errno + } } else { // It makes no sense to decrypt a ".name" file. This is a virtual file // that has no representation in the plaintext filesystem. ".name" -- cgit v1.2.3