Revert "libcli/security: tree and replace sid are not optional to sec_access_check_ds()"
authorStefan Metzmacher <metze@samba.org>
Fri, 18 Jan 2013 07:56:22 +0000 (08:56 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 27 Jun 2016 19:49:43 +0000 (21:49 +0200)
This reverts commit 34fefc3915ad4e94ba6afd8569e7c19ee13db781.

libcli/security/access_check.c

index 04287d0a2137c5827aee4b918a10df526e8ff4e5..2be59289347a7bf126bb00c4371bfef187729891 100644 (file)
@@ -461,7 +461,7 @@ NTSTATUS sec_access_check_ds(const struct security_descriptor *sd,
                        continue;
                }
 
-               if (dom_sid_equal(&ace->trustee, &self_sid)) {
+               if (dom_sid_equal(&ace->trustee, &self_sid) && replace_sid) {
                        trustee = replace_sid;
                } else {
                        trustee = &ace->trustee;
@@ -473,7 +473,9 @@ NTSTATUS sec_access_check_ds(const struct security_descriptor *sd,
 
                switch (ace->type) {
                case SEC_ACE_TYPE_ACCESS_ALLOWED:
-                       object_tree_modify_access(tree, ace->access_mask);
+                       if (tree) {
+                               object_tree_modify_access(tree, ace->access_mask);
+                       }
 
                        bits_remaining &= ~ace->access_mask;
                        break;
@@ -491,14 +493,16 @@ NTSTATUS sec_access_check_ds(const struct security_descriptor *sd,
                         */
                        type = get_ace_object_type(ace);
 
+                       if (!tree) {
+                               continue;
+                       }
+
                        if (!type) {
                                node = tree;
                        } else {
-                               node = get_object_tree_by_GUID(tree, type);
-                       }
-
-                       if (node == NULL) {
-                               continue;
+                               if (!(node = get_object_tree_by_GUID(tree, type))) {
+                                       continue;
+                               }
                        }
 
                        if (ace->type == SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT) {