s4-acl: Replaced talloc_reference with talloc_steal, as aclread is the only one using...
authorNadezhda Ivanova <nivanova@samba.org>
Wed, 8 Dec 2010 12:30:23 +0000 (14:30 +0200)
committerNadezhda Ivanova <nivanova@samba.org>
Wed, 8 Dec 2010 14:01:51 +0000 (15:01 +0100)
No need to reference as no one further up the stack uses the result, it is the result of a secondary request sent by aclread.

As a result from code review by Kamen Mazdrashki and Anatoliy Atanasov

Autobuild-User: Nadezhda Ivanova <nivanova@samba.org>
Autobuild-Date: Wed Dec  8 15:01:51 CET 2010 on sn-devel-104

source4/dsdb/samdb/ldb_modules/acl_read.c

index c7aaf113c7d59bb6e17399d53569a93b346a6013..27cc1e79cf90c4ee37299295a1df91c4dd38e2d5 100644 (file)
@@ -177,8 +177,9 @@ static int aclread_callback(struct ldb_request *req, struct ldb_reply *ares)
                         }
                 }
                 /*create a new message to return*/
-                ret_msg = ldb_msg_new(req);
+                ret_msg = ldb_msg_new(ac->req);
                 ret_msg->dn = msg->dn;
+                talloc_steal(ret_msg, msg->dn);
                 ret_msg->num_elements = num_of_attrs;
                 if (num_of_attrs > 0) {
                         ret_msg->elements = talloc_array(ret_msg,
@@ -191,11 +192,7 @@ static int aclread_callback(struct ldb_request *req, struct ldb_reply *ares)
                                 bool to_remove = aclread_is_inaccessible(&msg->elements[i]);
                                 if (!to_remove) {
                                         ret_msg->elements[k] = msg->elements[i];
-                                        if (!talloc_reference(ret_msg->elements,
-                                                              msg->elements[i].values)) {
-                                                talloc_free(tmp_ctx);
-                                                return ldb_operr(ldb);
-                                        }
+                                        talloc_steal(ret_msg->elements, msg->elements[i].values);
                                         k++;
                                 }
                         }