nfs4_acls: Correctly skip chown when gid did not change
authorChristof Schmitt <cs@samba.org>
Tue, 12 Jul 2022 12:12:21 +0000 (05:12 -0700)
committerChristof Schmitt <cs@samba.org>
Wed, 13 Jul 2022 17:30:30 +0000 (17:30 +0000)
Commit 86f7af84 introduced a problem that a chown is always attempted,
even when the owning gid did not change. Then the ACL is set in the file
system as root. Fix the check by correctly comparing with gid, not uid.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15120

Signed-off-by: Christof Schmitt <cs@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Autobuild-User(master): Christof Schmitt <cs@samba.org>
Autobuild-Date(master): Wed Jul 13 17:30:30 UTC 2022 on sn-devel-184

source3/modules/nfs4_acls.c

index c7808037a09f838aaaca66d264fc25a2a9ef47b3..ff446bb11669dbb3c6a75b3de9d6d67112f4b18f 100644 (file)
@@ -1022,7 +1022,7 @@ NTSTATUS smb_set_nt_acl_nfs4(vfs_handle_struct *handle, files_struct *fsp,
                /* chown logic is a copy/paste from posix_acl.c:set_nt_acl */
 
                uid_t old_uid = fsp->fsp_name->st.st_ex_uid;
-               uid_t old_gid = fsp->fsp_name->st.st_ex_uid;
+               gid_t old_gid = fsp->fsp_name->st.st_ex_gid;
                status = unpack_nt_owners(fsp->conn, &newUID, &newGID,
                                          security_info_sent, psd);
                if (!NT_STATUS_IS_OK(status)) {