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>
Tue, 29 Jan 2013 21:03:15 +0000 (22:03 +0100)
This reverts commit 34fefc3915ad4e94ba6afd8569e7c19ee13db781.

libcli/security/access_check.c

index 7d4785f73c7defffafab65952da51441be5a876b..936ffca242e6b6e7682f97dc3815e54715ee8fe9 100644 (file)
@@ -465,7 +465,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;
@@ -477,7 +477,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;
@@ -495,14 +497,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) {