]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
libcli/security: Handle new ACE types with sec_ace_object()
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Sun, 30 Jul 2023 22:55:42 +0000 (10:55 +1200)
committerJoseph Sutton <jsutton@samba.org>
Sun, 1 Oct 2023 22:45:38 +0000 (22:45 +0000)
Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
libcli/security/security_descriptor.c

index 8dca5892869bda1a72f74cd9694ab4ac7e00fcdf..9b9f16c6d2ef07779ff375897e7c8f21199bafa0 100644 (file)
@@ -312,15 +312,8 @@ static NTSTATUS security_descriptor_acl_add(struct security_descriptor *sd,
        ARRAY_INSERT_ELEMENT(acl->aces, acl->num_aces, *ace, idx);
        acl->num_aces++;
 
-       switch (acl->aces[idx].type) {
-       case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT:
-       case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT:
-       case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT:
-       case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT:
+       if (sec_ace_object(acl->aces[idx].type)) {
                acl->revision = SECURITY_ACL_REVISION_ADS;
-               break;
-       default:
-               break;
        }
 
        if (add_to_sacl) {
@@ -425,15 +418,9 @@ static NTSTATUS security_descriptor_acl_del(struct security_descriptor *sd,
        acl->revision = SECURITY_ACL_REVISION_NT4;
 
        for (i=0;i<acl->num_aces;i++) {
-               switch (acl->aces[i].type) {
-               case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT:
-               case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT:
-               case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT:
-               case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT:
+               if (sec_ace_object(acl->aces[i].type)) {
                        acl->revision = SECURITY_ACL_REVISION_ADS;
-                       return NT_STATUS_OK;
-               default:
-                       break; /* only for the switch statement */
+                       break;
                }
        }
 
@@ -502,15 +489,9 @@ static NTSTATUS security_descriptor_acl_del_ace(struct security_descriptor *sd,
        acl->revision = SECURITY_ACL_REVISION_NT4;
 
        for (i=0;i<acl->num_aces;i++) {
-               switch (acl->aces[i].type) {
-               case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT:
-               case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT:
-               case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT:
-               case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT:
+               if (sec_ace_object(acl->aces[i].type)) {
                        acl->revision = SECURITY_ACL_REVISION_ADS;
-                       return NT_STATUS_OK;
-               default:
-                       break; /* only for the switch statement */
+                       break;
                }
        }