diff options
author | Jakob Unterwurzacher | 2019-01-04 17:59:00 +0100 |
---|---|---|
committer | Jakob Unterwurzacher | 2019-01-04 17:59:00 +0100 |
commit | 6b94f5ef51c92f471919e7542a0ce45b0859282f (patch) | |
tree | 27194949d730d4eb7c7067408eb617f1ef9f96af | |
parent | 58f62ada465c4ecbdb9a62a08968bebe37f02b7d (diff) |
reverse mode: -exclude: filter out excluded .name files
Fixes https://github.com/rfjakob/gocryptfs/issues/286 :
While the actual file is properly excluded, the * .name file is still leaked in the directory listing:
```
drwxr-xr-x 2 sebastian sebastian 4,0K Dez 17 14:58 .
drwxr-xr-x 7 sebastian sebastian 4,0K Dez 17 14:45 ..
-r-------- 1 sebastian sebastian 408 Dez 17 14:56 gocryptfs.conf
-r--r--r-- 1 sebastian sebastian 16 Dez 17 14:58 gocryptfs.diriv
-r--r--r-- 1 sebastian sebastian 320 Dez 17 14:58 gocryptfs.longname.3vZ_r3eDPb1_fL3j5VA4rd_bcKWLKT9eaxOVIGK5HFA.name
```
-rw-r--r-- | internal/fusefrontend_reverse/rfs.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/internal/fusefrontend_reverse/rfs.go b/internal/fusefrontend_reverse/rfs.go index 50d995c..69cedb1 100644 --- a/internal/fusefrontend_reverse/rfs.go +++ b/internal/fusefrontend_reverse/rfs.go @@ -74,6 +74,15 @@ func NewFS(args fusefrontend.Args, c *contentenc.ContentEnc, n *nametransform.Na os.Exit(exitcodes.ExcludeError) } fs.cExclude = append(fs.cExclude, cPath) + if !fs.args.PlaintextNames { + // If we exclude + // gocryptfs.longname.3vZ_r3eDPb1_fL3j5VA4rd_bcKWLKT9eaxOVIGK5HFA + // we should also exclude + // gocryptfs.longname.3vZ_r3eDPb1_fL3j5VA4rd_bcKWLKT9eaxOVIGK5HFA.name + if nametransform.IsLongContent(filepath.Base(cPath)) { + fs.cExclude = append(fs.cExclude, cPath+nametransform.LongNameSuffix) + } + } } tlog.Debug.Printf("-exclude: %v -> %v", fs.args.Exclude, fs.cExclude) } @@ -361,10 +370,10 @@ func (rfs *ReverseFS) OpenDir(cipherPath string, context *fuse.Context) ([]fuse. } entries[i].Name = cName } - // Filter out excluded entries - entries = rfs.excludeDirEntries(cipherPath, entries) // Add virtual files entries = append(entries, virtualFiles[:nVirtual]...) + // Filter out excluded entries + entries = rfs.excludeDirEntries(cipherPath, entries) return entries, fuse.OK } |