From: Ralph Boehme Date: Wed, 16 Dec 2020 14:42:46 +0000 (+0100) Subject: vfs_acl_xattr: avoid removing the ACL xattr X-Git-Tag: samba-4.14.0rc1~183 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25ec288172738f78a7f97e241de2684fd97ad51e;p=thirdparty%2Fsamba.git vfs_acl_xattr: avoid removing the ACL xattr ...when called as part of setting a new NT ACL. This depends on the previous code changes, so won't be back ported. But for reference the bug id is below. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14592 Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- diff --git a/source3/modules/vfs_acl_xattr.c b/source3/modules/vfs_acl_xattr.c index 03c3b24866a..f5a26ec5592 100644 --- a/source3/modules/vfs_acl_xattr.c +++ b/source3/modules/vfs_acl_xattr.c @@ -228,6 +228,8 @@ static int sys_acl_set_fd_xattr(vfs_handle_struct *handle, SMB_ACL_TYPE_T type, SMB_ACL_T theacl) { + struct acl_common_fsp_ext *ext = (struct acl_common_fsp_ext *) + VFS_FETCH_FSP_EXTENSION(handle, fsp); int ret; ret = SMB_VFS_NEXT_SYS_ACL_SET_FD(handle, @@ -238,11 +240,15 @@ static int sys_acl_set_fd_xattr(vfs_handle_struct *handle, return -1; } + if (ext != NULL && ext->setting_nt_acl) { + return 0; + } + become_root(); SMB_VFS_FREMOVEXATTR(fsp, XATTR_NTACL_NAME); unbecome_root(); - return ret; + return 0; } static int connect_acl_xattr(struct vfs_handle_struct *handle,