summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
Diffstat (limited to 'source4')
-rw-r--r--source4/libnet/libnet_samsync_ldb.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/source4/libnet/libnet_samsync_ldb.c b/source4/libnet/libnet_samsync_ldb.c
index 8d06ec84b6..f595880e8e 100644
--- a/source4/libnet/libnet_samsync_ldb.c
+++ b/source4/libnet/libnet_samsync_ldb.c
@@ -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;