s3: VFS: fake_acls: Add fake_acls_sys_acl_delete_def_fd().
authorJeremy Allison <jra@samba.org>
Fri, 14 May 2021 21:39:12 +0000 (14:39 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 18 May 2021 17:29:34 +0000 (17:29 +0000)
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Noel Power <npower@samba.org>
source3/modules/vfs_fake_acls.c

index c92deb850970e1092c71dda8d241670c1cd4c5b0..f2675825d07ed7149296e5fd5007168b8ed1cb30 100644 (file)
@@ -374,6 +374,26 @@ static int fake_acls_sys_acl_delete_def_file(vfs_handle_struct *handle,
        return ret;
 }
 
+static int fake_acls_sys_acl_delete_def_fd(vfs_handle_struct *handle,
+                       struct files_struct *fsp)
+{
+       int ret;
+       const char *name = FAKE_ACL_DEFAULT_XATTR;
+
+       if (!fsp->fsp_flags.is_directory) {
+               errno = EINVAL;
+               return -1;
+       }
+
+       ret = SMB_VFS_NEXT_FREMOVEXATTR(handle, fsp, name);
+       if (ret == -1 && errno == ENOATTR) {
+               ret = 0;
+               errno = 0;
+       }
+
+       return ret;
+}
+
 static int fake_acls_lchown(vfs_handle_struct *handle,
                        const struct smb_filename *smb_fname,
                        uid_t uid,
@@ -633,6 +653,7 @@ static struct vfs_fn_pointers vfs_fake_acls_fns = {
        .sys_acl_blob_get_fd_fn = posix_sys_acl_blob_get_fd,
        .sys_acl_set_fd_fn = fake_acls_sys_acl_set_fd,
        .sys_acl_delete_def_file_fn = fake_acls_sys_acl_delete_def_file,
+       .sys_acl_delete_def_fd_fn = fake_acls_sys_acl_delete_def_fd,
        .lchown_fn = fake_acls_lchown,
        .fchown_fn = fake_acls_fchown,