diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/fusefrontend/node_dir_ops.go | 14 | ||||
| -rw-r--r-- | internal/syscallcompat/sys_linux.go | 9 | 
2 files changed, 8 insertions, 15 deletions
| diff --git a/internal/fusefrontend/node_dir_ops.go b/internal/fusefrontend/node_dir_ops.go index 715b7aa..ddffea6 100644 --- a/internal/fusefrontend/node_dir_ops.go +++ b/internal/fusefrontend/node_dir_ops.go @@ -35,14 +35,14 @@ func haveDsstore(entries []fuse.DirEntry) bool {  // mkdirWithIv - create a new directory and corresponding diriv file. dirfd  // should be a handle to the parent directory, cName is the name of the new  // directory and mode specifies the access permissions to use. -func (n *Node) mkdirWithIv(dirfd int, cName string, mode uint32, caller *fuse.Caller) error { +func (n *Node) mkdirWithIv(dirfd int, cName string, mode uint32, context *fuse.Context) error {  	rn := n.rootNode()  	// Between the creation of the directory and the creation of gocryptfs.diriv  	// the directory is inconsistent. Take the lock to prevent other readers  	// from seeing it.  	rn.dirIVLock.Lock()  	defer rn.dirIVLock.Unlock() -	err := syscallcompat.MkdiratUser(dirfd, cName, mode, caller) +	err := syscallcompat.MkdiratUser(dirfd, cName, mode, context)  	if err != nil {  		return err  	} @@ -73,14 +73,14 @@ func (n *Node) Mkdir(ctx context.Context, name string, mode uint32, out *fuse.En  	defer syscall.Close(dirfd)  	rn := n.rootNode() -	var caller *fuse.Caller +	var context *fuse.Context  	if rn.args.PreserveOwner { -		caller, _ = fuse.FromContext(ctx) +		context = toFuseCtx(ctx)  	}  	var st syscall.Stat_t  	if rn.args.PlaintextNames { -		err := syscallcompat.MkdiratUser(dirfd, cName, mode, caller) +		err := syscallcompat.MkdiratUser(dirfd, cName, mode, context)  		if err != nil {  			return nil, fs.ToErrno(err)  		} @@ -106,13 +106,13 @@ func (n *Node) Mkdir(ctx context.Context, name string, mode uint32, out *fuse.En  			}  			// Create directory -			err = rn.mkdirWithIv(dirfd, cName, mode, caller) +			err = rn.mkdirWithIv(dirfd, cName, mode, context)  			if err != nil {  				nametransform.DeleteLongNameAt(dirfd, cName)  				return nil, fs.ToErrno(err)  			}  		} else { -			err := rn.mkdirWithIv(dirfd, cName, mode, caller) +			err := rn.mkdirWithIv(dirfd, cName, mode, context)  			if err != nil {  				return nil, fs.ToErrno(err)  			} diff --git a/internal/syscallcompat/sys_linux.go b/internal/syscallcompat/sys_linux.go index 0db8c60..46d039c 100644 --- a/internal/syscallcompat/sys_linux.go +++ b/internal/syscallcompat/sys_linux.go @@ -209,18 +209,11 @@ func SymlinkatUser(oldpath string, newdirfd int, newpath string, context *fuse.C  // MkdiratUser runs the Mkdirat syscall in the context of a different user.  //  // See OpenatUser() for how this works. -func MkdiratUser(dirfd int, path string, mode uint32, caller *fuse.Caller) (err error) { +func MkdiratUser(dirfd int, path string, mode uint32, context *fuse.Context) (err error) {  	f := func() (int, error) {  		err := Mkdirat(dirfd, path, mode)  		return -1, err  	} -	// TODO: refactor MkdiratUser to take context instead of caller -	var context *fuse.Context -	if caller != nil { -		context = &fuse.Context{ -			Caller: *caller, -		} -	}  	_, err = asUser(f, context)  	return err  } | 
