diff options
Diffstat (limited to 'source4/libnet')
-rw-r--r-- | source4/libnet/libnet_samsync_ldb.c | 32 |
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; |