]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
nfs4_acls: Use switch/case for checking idmap type
authorChristof Schmitt <cs@samba.org>
Mon, 15 Jul 2019 20:15:32 +0000 (13:15 -0700)
committerKarolin Seeger <kseeger@samba.org>
Mon, 26 Aug 2019 10:23:27 +0000 (10:23 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14032

Signed-off-by: Christof Schmitt <cs@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
(cherry picked from commit f198a0867e71f248d4887ab0b6f2832123b16d11)

source3/modules/nfs4_acls.c

index 4069c9310ed516f60c9b4b1044e4c19159860580..f8861e9058ba700823db173bcc8c6ec2104e159e 100644 (file)
@@ -730,18 +730,27 @@ static bool smbacl4_fill_ace4(
                        return false;
                }
 
-               if (unixid.type == ID_TYPE_GID || unixid.type == ID_TYPE_BOTH) {
+               if (dom_sid_compare_domain(&ace_nt->trustee,
+                                          &global_sid_Unix_NFS) == 0) {
+                       return false;
+               }
+
+               switch (unixid.type) {
+               case ID_TYPE_BOTH:
                        ace_v4->aceFlags |= SMB_ACE4_IDENTIFIER_GROUP;
                        ace_v4->who.gid = unixid.id;
-               } else if (unixid.type == ID_TYPE_UID) {
+                       break;
+               case ID_TYPE_GID:
+                       ace_v4->aceFlags |= SMB_ACE4_IDENTIFIER_GROUP;
+                       ace_v4->who.gid = unixid.id;
+                       break;
+               case ID_TYPE_UID:
                        ace_v4->who.uid = unixid.id;
-               } else if (dom_sid_compare_domain(&ace_nt->trustee,
-                                                 &global_sid_Unix_NFS) == 0) {
-                       return false;
-               } else {
-                       DEBUG(1, ("nfs4_acls.c: could not "
-                                 "convert %s to uid or gid\n",
-                                 dom_sid_str_buf(&ace_nt->trustee, &buf)));
+                       break;
+               case ID_TYPE_NOT_SPECIFIED:
+               default:
+                       DBG_WARNING("Could not convert %s to uid or gid.\n",
+                                   dom_sid_str_buf(&ace_nt->trustee, &buf));
                        return false;
                }
        }