winbind: add idmap_child_handle() and use it instead of child->binding_handle
authorStefan Metzmacher <metze@samba.org>
Wed, 14 Feb 2018 12:24:54 +0000 (13:24 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 23 Feb 2018 03:09:18 +0000 (04:09 +0100)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13292

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/winbindd/wb_sids2xids.c
source3/winbindd/winbindd_allocate_gid.c
source3/winbindd/winbindd_allocate_uid.c
source3/winbindd/winbindd_idmap.c
source3/winbindd/winbindd_proto.h

index b8ad300ba3c80e1e82f5eccc1f87421d7ca963a7..c687f7064bb6f73247711bd93260782d609e3bb9 100644 (file)
@@ -167,7 +167,7 @@ static void wb_sids2xids_lookupsids_done(struct tevent_req *subreq)
                req, struct wb_sids2xids_state);
        struct lsa_RefDomainList *domains = NULL;
        struct lsa_TransNameArray *names = NULL;
-       struct winbindd_child *child;
+       struct dcerpc_binding_handle *child_binding_handle = NULL;
        NTSTATUS status;
        int i;
 
@@ -237,7 +237,7 @@ static void wb_sids2xids_lookupsids_done(struct tevent_req *subreq)
        TALLOC_FREE(names);
        TALLOC_FREE(domains);
 
-       child = idmap_child();
+       child_binding_handle = idmap_child_handle();
 
        state->dom_ids = wb_sids2xids_extract_for_domain_index(
                state, &state->ids, state->dom_index);
@@ -252,7 +252,7 @@ static void wb_sids2xids_lookupsids_done(struct tevent_req *subreq)
        };
 
        subreq = dcerpc_wbint_Sids2UnixIDs_send(
-               state, state->ev, child->binding_handle, &state->idmap_dom,
+               state, state->ev, child_binding_handle, &state->idmap_dom,
                state->dom_ids);
        if (tevent_req_nomem(subreq, req)) {
                return;
index a9236bbf23d5873ad912af334d6cdd6fdeeae81f..85aa136947391563bab55adb140cfe650cb4c504 100644 (file)
@@ -34,7 +34,7 @@ struct tevent_req *winbindd_allocate_gid_send(TALLOC_CTX *mem_ctx,
 {
        struct tevent_req *req, *subreq;
        struct winbindd_allocate_gid_state *state;
-       struct winbindd_child *child;
+       struct dcerpc_binding_handle *child_binding_handle = NULL;
 
        req = tevent_req_create(mem_ctx, &state,
                                struct winbindd_allocate_gid_state);
@@ -44,9 +44,9 @@ struct tevent_req *winbindd_allocate_gid_send(TALLOC_CTX *mem_ctx,
 
        DEBUG(3, ("allocate_gid\n"));
 
-       child = idmap_child();
+       child_binding_handle = idmap_child_handle();
 
-       subreq = dcerpc_wbint_AllocateGid_send(state, ev, child->binding_handle,
+       subreq = dcerpc_wbint_AllocateGid_send(state, ev, child_binding_handle,
                                               &state->gid);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
index 99c0bdac10246bd09438819107aadda76b53966b..69ce61c872e70def55b7d12d2768ded2aeafcba6 100644 (file)
@@ -34,7 +34,7 @@ struct tevent_req *winbindd_allocate_uid_send(TALLOC_CTX *mem_ctx,
 {
        struct tevent_req *req, *subreq;
        struct winbindd_allocate_uid_state *state;
-       struct winbindd_child *child;
+       struct dcerpc_binding_handle *child_binding_handle = NULL;
 
        req = tevent_req_create(mem_ctx, &state,
                                struct winbindd_allocate_uid_state);
@@ -44,9 +44,9 @@ struct tevent_req *winbindd_allocate_uid_send(TALLOC_CTX *mem_ctx,
 
        DEBUG(3, ("allocate_uid\n"));
 
-       child = idmap_child();
+       child_binding_handle = idmap_child_handle();
 
-       subreq = dcerpc_wbint_AllocateUid_send(state, ev, child->binding_handle,
+       subreq = dcerpc_wbint_AllocateUid_send(state, ev, child_binding_handle,
                                               &state->uid);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
index 028026087d603e548c28b54eda9d2c4cbc9bdfbf..2ee436bc7dcd28794da2b135b32e44195dec59ee 100644 (file)
@@ -34,6 +34,11 @@ struct winbindd_child *idmap_child(void)
        return &static_idmap_child;
 }
 
+struct dcerpc_binding_handle *idmap_child_handle(void)
+{
+       return static_idmap_child.binding_handle;
+}
+
 static const struct winbindd_child_dispatch_table idmap_dispatch_table[] = {
        {
                .name           = "PING",
index d09176d954a5690635a493bade9db4e89f6cf81f..66d4a19617ca9f59c4e034346c5ac734b8d6e3f1 100644 (file)
@@ -351,6 +351,7 @@ NTSTATUS winbindd_print_groupmembers(struct db_context *members,
 
 void init_idmap_child(void);
 struct winbindd_child *idmap_child(void);
+struct dcerpc_binding_handle *idmap_child_handle(void);
 struct idmap_domain *idmap_find_domain_with_sid(const char *domname,
                                                const struct dom_sid *sid);
 const char *idmap_config_const_string(const char *domname, const char *option,