summaryrefslogtreecommitdiff
path: root/internal/fusefrontend/fs.go
diff options
context:
space:
mode:
authorDavid Gnedt2016-05-12 19:51:13 +0200
committerJakob Unterwurzacher2016-05-12 23:24:39 +0200
commita93bcabe9c1dea14bf29b94cbddf62c1bec4d315 (patch)
treead5830a100e04be6e3493d2769f67a4d7608146f /internal/fusefrontend/fs.go
parent4ad9d4e444e4f75fd388078b617c411bfab762c8 (diff)
Encrypt path in statfs() calls
Paths in statfs() calls were not encrypted resulting in an Function not implemented error, when the unencrypted path didn't exist in the underlying (encrypted) filesystem. $ df plain/existingdir df: ‘plain/existingdir’: Function not implemented
Diffstat (limited to 'internal/fusefrontend/fs.go')
-rw-r--r--internal/fusefrontend/fs.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/internal/fusefrontend/fs.go b/internal/fusefrontend/fs.go
index d2465dd..b7528a1 100644
--- a/internal/fusefrontend/fs.go
+++ b/internal/fusefrontend/fs.go
@@ -228,6 +228,17 @@ func (fs *FS) Utimens(path string, Atime *time.Time, Mtime *time.Time, context *
return fs.FileSystem.Utimens(cPath, Atime, Mtime, context)
}
+func (fs *FS) StatFs(path string) *fuse.StatfsOut {
+ if fs.isFiltered(path) {
+ return nil
+ }
+ cPath, err := fs.encryptPath(path)
+ if err != nil {
+ return nil
+ }
+ return fs.FileSystem.StatFs(cPath)
+}
+
func (fs *FS) Readlink(path string, context *fuse.Context) (out string, status fuse.Status) {
cPath, err := fs.encryptPath(path)
if err != nil {