r9643: fixed samsync code for the new dn explode semantics
authorAndrew Tridgell <tridge@samba.org>
Fri, 26 Aug 2005 11:36:28 +0000 (11:36 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:34:36 +0000 (13:34 -0500)
(This used to be commit 96298af202f994c3d5d0c7f5dacd1197a740f766)

source4/libnet/libnet_samsync_ldb.c

index 8d06ec84b6c78afc93385f3533ec6b50e86680a4..f595880e8e7e75101c12f8f36ebc605d80f71a8d 100644 (file)
@@ -119,6 +119,8 @@ static NTSTATUS samsync_ldb_handle_domain(TALLOC_CTX *mem_ctx,
                const char *domain_attrs[] =  {"nETBIOSName", "nCName", NULL};
                struct ldb_message **msgs_domain;
                int ret_domain;
+               char *base_dn;
+
                ret_domain = gendb_search(state->sam_ldb, mem_ctx, NULL, &msgs_domain, domain_attrs,
                                          "(&(&(nETBIOSName=%s)(objectclass=crossRef))(ncName=*))", 
                                          domain_name);
@@ -130,24 +132,20 @@ static NTSTATUS samsync_ldb_handle_domain(TALLOC_CTX *mem_ctx,
                        return NT_STATUS_NO_SUCH_DOMAIN;                
                }
 
-               state->base_dn[database]
-                       = talloc_steal(state, samdb_result_string(msgs_domain[0], 
-                                                                 "nCName", NULL));
-               
-               state->dom_sid[database]
-                       = talloc_steal(state, 
-                                      samdb_search_dom_sid(state->sam_ldb, state,
-                                                           state->base_dn[database], "objectSid", "dn=%s",
-                                                           ldb_dn_linearize(mem_ctx, state->base_dn[database])));
+               state->base_dn[database] = samdb_result_dn(state, msgs_domain[0], "nCName", NULL);
+
+               base_dn = ldb_dn_linearize(mem_ctx, state->base_dn[database]);
+
+               state->dom_sid[database] = samdb_search_dom_sid(state->sam_ldb, state,
+                                                               state->base_dn[database], 
+                                                               "objectSid", "dn=%s", base_dn);
        } else if (database == SAM_DATABASE_BUILTIN) {
-                       /* work out the builtin_dn - useful for so many calls its worth
-                          fetching here */
-               state->base_dn[database]
-                       = talloc_steal(state, 
-                                      samdb_search_string(state->sam_ldb, mem_ctx, NULL,
-                                                          "dn", "objectClass=builtinDomain"));
-               state->dom_sid[database]
-                       = dom_sid_parse_talloc(state, SID_BUILTIN);
+               /* work out the builtin_dn - useful for so many calls its worth
+                  fetching here */
+               const char *dnstring = samdb_search_string(state->sam_ldb, mem_ctx, NULL,
+                                                          "dn", "objectClass=builtinDomain");
+               state->base_dn[database] = ldb_dn_explode(state, dnstring);
+               state->dom_sid[database] = dom_sid_parse_talloc(state, SID_BUILTIN);
        } else {
                /* PRIVs DB */
                return NT_STATUS_INVALID_PARAMETER;