diff options
author | Jakob Unterwurzacher | 2023-03-29 22:16:14 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2023-03-29 22:16:14 +0200 |
commit | 24b3978715186bed3edc2703e81f165a73c0a74a (patch) | |
tree | 54d427d9f1e667deafeb7034f6f3001dfe63b827 /internal/fusefrontend | |
parent | b370325ccf8a15d3b58418d85fd22e32e2aeb2fc (diff) |
fusefrontent: report correct size on hard link creation
And add a test for it.
Fixes https://github.com/rfjakob/gocryptfs/issues/724
Diffstat (limited to 'internal/fusefrontend')
-rw-r--r-- | internal/fusefrontend/node.go | 1 | ||||
-rw-r--r-- | internal/fusefrontend/node_helpers.go | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/internal/fusefrontend/node.go b/internal/fusefrontend/node.go index 688cc0d..274123b 100644 --- a/internal/fusefrontend/node.go +++ b/internal/fusefrontend/node.go @@ -334,6 +334,7 @@ func (n *Node) Link(ctx context.Context, target fs.InodeEmbedder, name string, o return } inode = n.newChild(ctx, st, out) + n.translateSize(dirfd, cName, &out.Attr) return inode, 0 } diff --git a/internal/fusefrontend/node_helpers.go b/internal/fusefrontend/node_helpers.go index 46046f1..f5dfeb6 100644 --- a/internal/fusefrontend/node_helpers.go +++ b/internal/fusefrontend/node_helpers.go @@ -62,6 +62,7 @@ func (n *Node) translateSize(dirfd int, cName string, out *fuse.Attr) { rn := n.rootNode() out.Size = rn.contentEnc.CipherSizeToPlainSize(out.Size) } else if out.IsSymlink() { + // read and decrypt target target, _ := n.readlink(dirfd, cName) out.Size = uint64(len(target)) } |