s4:samldb LDB module - get rid of the SID context variable
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Sun, 12 Sep 2010 10:53:37 +0000 (12:53 +0200)
committerMatthias Dieter Wallnöfer <mdw@samba.org>
Sun, 12 Sep 2010 17:23:05 +0000 (19:23 +0200)
Since we get more and more rid of async stuff we don't need this in the context
anymore.

source4/dsdb/samdb/ldb_modules/samldb.c

index 8f6539a8f7d8fb3bfdf65e1f8c30b964b515db99..7b29a0460ab97b38b5a6dab115b88776e706d9de 100644 (file)
@@ -59,14 +59,10 @@ struct samldb_ctx {
        /* the resulting message */
        struct ldb_message *msg;
 
-       /* holds the entry SID */
-       struct dom_sid *sid;
-
        /* holds a generic dn */
        struct ldb_dn *dn;
 
-       /* used in conjunction with "sid" in "samldb_dn_from_sid" and
-        * "samldb_find_for_defaultObjectCategory" */
+       /* used in "samldb_find_for_defaultObjectCategory" */
        struct ldb_dn *res_dn;
 
        /* all the async steps necessary to complete the operation */
@@ -274,20 +270,21 @@ static bool samldb_msg_add_sid(struct ldb_message *msg,
 static int samldb_allocate_sid(struct samldb_ctx *ac)
 {
        uint32_t rid;
-       int ret;
+       struct dom_sid *sid;
        struct ldb_context *ldb = ldb_module_get_ctx(ac->module);
+       int ret;
 
        ret = ridalloc_allocate_rid(ac->module, &rid);
        if (ret != LDB_SUCCESS) {
                return ret;
        }
 
-       ac->sid = dom_sid_add_rid(ac, samdb_domain_sid(ldb), rid);
-       if (ac->sid == NULL) {
+       sid = dom_sid_add_rid(ac, samdb_domain_sid(ldb), rid);
+       if (sid == NULL) {
                return ldb_module_oom(ac->module);
        }
 
-       if ( ! samldb_msg_add_sid(ac->msg, "objectSid", ac->sid)) {
+       if ( ! samldb_msg_add_sid(ac->msg, "objectSid", sid)) {
                return ldb_operr(ldb);
        }
 
@@ -763,6 +760,7 @@ static int samldb_fill_object(struct samldb_ctx *ac, const char *type)
        enum sid_generator sid_generator;
        int ret;
        struct ldb_control *rodc_control;
+       struct dom_sid *sid;
 
        ldb = ldb_module_get_ctx(ac->module);
 
@@ -968,15 +966,15 @@ static int samldb_fill_object(struct samldb_ctx *ac, const char *type)
                 struct loadparm_context);
 
        /* don't allow objectSID to be specified without the RELAX control */
-       ac->sid = samdb_result_dom_sid(ac, ac->msg, "objectSid");
-       if (ac->sid && !ldb_request_get_control(ac->req, LDB_CONTROL_RELAX_OID) &&
+       sid = samdb_result_dom_sid(ac, ac->msg, "objectSid");
+       if (sid && !ldb_request_get_control(ac->req, LDB_CONTROL_RELAX_OID) &&
            !dsdb_module_am_system(ac->module)) {
                ldb_asprintf_errstring(ldb, "No SID may be specified in user/group creation for %s",
                                       ldb_dn_get_linearized(ac->msg->dn));
                return LDB_ERR_UNWILLING_TO_PERFORM;
        }
 
-       if ( ! ac->sid) {
+       if (sid == NULL) {
                sid_generator = lpcfg_sid_generator(lp_ctx);
                if (sid_generator == SID_GENERATOR_INTERNAL) {
                        ret = samldb_add_step(ac, samldb_allocate_sid);
@@ -994,23 +992,22 @@ static int samldb_fill_object(struct samldb_ctx *ac, const char *type)
 static int samldb_fill_foreignSecurityPrincipal_object(struct samldb_ctx *ac)
 {
        struct ldb_context *ldb;
+       struct dom_sid *sid;
        int ret;
 
        ldb = ldb_module_get_ctx(ac->module);
 
-       ac->sid = samdb_result_dom_sid(ac->msg, ac->msg, "objectSid");
-       if (ac->sid == NULL) {
-               ac->sid = dom_sid_parse_talloc(ac->msg,
-                          (const char *)ldb_dn_get_rdn_val(ac->msg->dn)->data);
-               if (!ac->sid) {
+       sid = samdb_result_dom_sid(ac->msg, ac->msg, "objectSid");
+       if (sid == NULL) {
+               sid = dom_sid_parse_talloc(ac->msg,
+                                          (const char *)ldb_dn_get_rdn_val(ac->msg->dn)->data);
+               if (sid == NULL) {
                        ldb_set_errstring(ldb,
                                        "No valid SID found in "
                                        "ForeignSecurityPrincipal CN!");
-                       talloc_free(ac);
                        return LDB_ERR_CONSTRAINT_VIOLATION;
                }
-               if ( ! samldb_msg_add_sid(ac->msg, "objectSid", ac->sid)) {
-                       talloc_free(ac);
+               if (! samldb_msg_add_sid(ac->msg, "objectSid", sid)) {
                        return ldb_operr(ldb);
                }
        }