r26296: Store loadparm context in DCE/RPC server context.
[jelmer/samba4-debian.git] / source / rpc_server / drsuapi / dcesrv_drsuapi.c
index d8b361ca2793175468fa76768a7bd1e2744c3c43..a97b93a051a3bae29fb6931968f6843ca9091cf6 100644 (file)
@@ -27,6 +27,7 @@
 #include "rpc_server/drsuapi/dcesrv_drsuapi.h"
 #include "dsdb/samdb/samdb.h"
 #include "lib/ldb/include/ldb_errors.h"
+#include "param/param.h"
 
 /* 
   drsuapi_DsBind 
@@ -57,7 +58,7 @@ static WERROR dcesrv_drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_C
        /*
         * connect to the samdb
         */
-       b_state->sam_ctx = samdb_connect(b_state, dce_call->conn->auth_state.session_info); 
+       b_state->sam_ctx = samdb_connect(b_state, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info); 
        if (!b_state->sam_ctx) {
                return WERR_FOOBAR;
        }
@@ -431,7 +432,7 @@ static WERROR dcesrv_drsuapi_DsWriteAccountSpn(struct dcesrv_call_state *dce_cal
    
                        /* Apply to database */
 
-                       ret = samdb_modify(b_state->sam_ctx, mem_ctx, msg);
+                       ret = ldb_modify(b_state->sam_ctx, msg);
                        if (ret != 0) {
                                DEBUG(0,("Failed to modify SPNs on %s: %s\n",
                                         ldb_dn_get_linearized(msg->dn), 
@@ -570,6 +571,7 @@ static WERROR dcesrv_drsuapi_DsGetDomainControllerInfo_1(struct drsuapi_bind_sta
                        ret = ldb_search_exp_fmt(b_state->sam_ctx, mem_ctx, &res_account, ref_dn, 
                                                 LDB_SCOPE_BASE, attrs_account_1, "objectClass=computer");
                        if (ret == LDB_SUCCESS && res_account->count == 1) {
+                               const char *errstr;
                                ctr1->array[i].dns_name
                                        = ldb_msg_find_attr_as_string(res_account->msgs[0], "dNSHostName", NULL);
                                ctr1->array[i].netbios_name
@@ -578,10 +580,11 @@ static WERROR dcesrv_drsuapi_DsGetDomainControllerInfo_1(struct drsuapi_bind_sta
                                        = ldb_dn_get_linearized(res_account->msgs[0]->dn);
 
                                /* Determine if this is the PDC */
-                               domain_dn = samdb_search_for_parent_domain(b_state->sam_ctx, 
-                                                                          mem_ctx, res_account->msgs[0]->dn);
+                               ret = samdb_search_for_parent_domain(b_state->sam_ctx, 
+                                                                    mem_ctx, res_account->msgs[0]->dn,
+                                                                    &domain_dn, &errstr);
                                
-                               if (domain_dn) {
+                               if (ret == LDB_SUCCESS) {
                                        ret = ldb_search_exp_fmt(b_state->sam_ctx, mem_ctx, &res_domain, domain_dn, 
                                                                 LDB_SCOPE_BASE, attrs_none, "fSMORoleOwner=%s",
                                                                 ldb_dn_get_linearized(ntds_dn));
@@ -664,6 +667,7 @@ static WERROR dcesrv_drsuapi_DsGetDomainControllerInfo_1(struct drsuapi_bind_sta
                        ret = ldb_search_exp_fmt(b_state->sam_ctx, mem_ctx, &res_account, ref_dn, 
                                                 LDB_SCOPE_BASE, attrs_account_2, "objectClass=computer");
                        if (ret == LDB_SUCCESS && res_account->count == 1) {
+                               const char *errstr;
                                ctr2->array[i].dns_name
                                        = ldb_msg_find_attr_as_string(res_account->msgs[0], "dNSHostName", NULL);
                                ctr2->array[i].netbios_name
@@ -673,10 +677,11 @@ static WERROR dcesrv_drsuapi_DsGetDomainControllerInfo_1(struct drsuapi_bind_sta
                                        = samdb_result_guid(res_account->msgs[0], "objectGUID");
 
                                /* Determine if this is the PDC */
-                               domain_dn = samdb_search_for_parent_domain(b_state->sam_ctx, 
-                                                                          mem_ctx, res_account->msgs[0]->dn);
+                               ret = samdb_search_for_parent_domain(b_state->sam_ctx, 
+                                                                    mem_ctx, res_account->msgs[0]->dn,
+                                                                    &domain_dn, &errstr);
                                
-                               if (domain_dn) {
+                               if (ret == LDB_SUCCESS) {
                                        ret = ldb_search_exp_fmt(b_state->sam_ctx, mem_ctx, &res_domain, domain_dn, 
                                                                 LDB_SCOPE_BASE, attrs_none, "fSMORoleOwner=%s",
                                                                 ldb_dn_get_linearized(ntds_dn));