fusefrontend: Handle PlaintextNames mode in Link
In PlaintextNames mode the "gocryptfs.longname." prefix does not have any special meaning. https://github.com/rfjakob/gocryptfs/issues/174
This commit is contained in:
parent
ca594b2349
commit
a24342f656
@ -550,7 +550,7 @@ func (fs *FS) Link(oldPath string, newPath string, context *fuse.Context) (code
|
||||
}
|
||||
// Handle long file name
|
||||
cNewName := filepath.Base(cNewPath)
|
||||
if nametransform.IsLongContent(cNewName) {
|
||||
if !fs.args.PlaintextNames && nametransform.IsLongContent(cNewName) {
|
||||
dirfd, err := os.Open(filepath.Dir(cNewPath))
|
||||
if err != nil {
|
||||
return fuse.ToStatus(err)
|
||||
|
@ -812,3 +812,26 @@ func TestSymlink(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure the Link call works with paths starting with "gocryptfs.longname."
|
||||
func TestLink(t *testing.T) {
|
||||
target := test_helpers.DefaultPlainDir + "/linktarget"
|
||||
f, err := os.Create(target)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
f.Close()
|
||||
path := test_helpers.DefaultPlainDir + "/gocryptfs.longname.XXX"
|
||||
err = syscall.Link(target, path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = os.Remove(target)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = os.Remove(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user