summaryrefslogtreecommitdiffstats
path: root/source4/libnet
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-01-14 12:11:17 +0100
committerGünther Deschner <gd@samba.org>2014-01-16 16:22:52 +0100
commitf33a558750435600ab63f26abd71de9f4f0a30f6 (patch)
tree5f4392ab713e147400e8174c78893abb755d6739 /source4/libnet
parent5bbcec0c2a626f005ae71490a4530fdb6b7088ad (diff)
downloadsamba-f33a558750435600ab63f26abd71de9f4f0a30f6.tar.gz
samba-f33a558750435600ab63f26abd71de9f4f0a30f6.tar.xz
samba-f33a558750435600ab63f26abd71de9f4f0a30f6.zip
s4:libnet: let libnet_rpc_usermod_send() take tevent_context/dcerpc_binding_handle
This avoids usage/dereferencing 'struct dcerpc_pipe'. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Guenther Deschner <gd@samba.org>
Diffstat (limited to 'source4/libnet')
-rw-r--r--source4/libnet/libnet_user.c4
-rw-r--r--source4/libnet/userman.c24
2 files changed, 16 insertions, 12 deletions
diff --git a/source4/libnet/libnet_user.c b/source4/libnet/libnet_user.c
index 2d35dc81c11..f4b90d9f027 100644
--- a/source4/libnet/libnet_user.c
+++ b/source4/libnet/libnet_user.c
@@ -495,7 +495,9 @@ static void continue_rpc_userinfo(struct composite_context *ctx)
c->status = set_user_changes(c, &s->user_mod.in.change, &s->user_info, &s->r);
- usermod_req = libnet_rpc_usermod_send(s->ctx->samr.pipe, s, &s->user_mod, s->monitor_fn);
+ usermod_req = libnet_rpc_usermod_send(s, s->ctx->event_ctx,
+ s->ctx->samr.samr_handle,
+ &s->user_mod, s->monitor_fn);
if (composite_nomem(usermod_req, c)) return;
composite_continue(c, usermod_req, continue_rpc_usermod, c);
diff --git a/source4/libnet/userman.c b/source4/libnet/userman.c
index 650f71a4dcb..3058060b9d5 100644
--- a/source4/libnet/userman.c
+++ b/source4/libnet/userman.c
@@ -475,7 +475,7 @@ static void continue_usermod_user_changed(struct tevent_req *subreq);
struct usermod_state {
- struct dcerpc_pipe *pipe;
+ struct dcerpc_binding_handle *binding_handle;
struct policy_handle domain_handle;
struct policy_handle user_handle;
struct usermod_change change;
@@ -545,7 +545,7 @@ static void continue_usermod_name_found(struct tevent_req *subreq)
/* send the rpc request */
subreq = dcerpc_samr_OpenUser_r_send(s, c->event_ctx,
- s->pipe->binding_handle,
+ s->binding_handle,
&s->openuser);
if (composite_nomem(subreq, c)) return;
@@ -701,7 +701,7 @@ static NTSTATUS usermod_change(struct composite_context *c,
/* send query user info request to retrieve complete data of
a particular info level */
subreq = dcerpc_samr_QueryUserInfo_r_send(s, c->event_ctx,
- s->pipe->binding_handle,
+ s->binding_handle,
&s->queryuser);
if (composite_nomem(subreq, c)) return NT_STATUS_NO_MEMORY;
tevent_req_set_callback(subreq, continue_usermod_user_queried, c);
@@ -713,7 +713,7 @@ static NTSTATUS usermod_change(struct composite_context *c,
/* send set user info request after making required change */
subreq = dcerpc_samr_SetUserInfo_r_send(s, c->event_ctx,
- s->pipe->binding_handle,
+ s->binding_handle,
&s->setuser);
if (composite_nomem(subreq, c)) return NT_STATUS_NO_MEMORY;
tevent_req_set_callback(subreq, continue_usermod_user_changed, c);
@@ -787,7 +787,7 @@ static void continue_usermod_user_queried(struct tevent_req *subreq)
/* send the rpc request */
subreq = dcerpc_samr_SetUserInfo_r_send(s, c->event_ctx,
- s->pipe->binding_handle,
+ s->binding_handle,
&s->setuser);
if (composite_nomem(subreq, c)) return;
tevent_req_set_callback(subreq, continue_usermod_user_changed, c);
@@ -836,8 +836,9 @@ static void continue_usermod_user_changed(struct tevent_req *subreq)
* @param monitor monitor function for providing information about the progress
*/
-struct composite_context *libnet_rpc_usermod_send(struct dcerpc_pipe *p,
- TALLOC_CTX *mem_ctx,
+struct composite_context *libnet_rpc_usermod_send(TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
+ struct dcerpc_binding_handle *b,
struct libnet_rpc_usermod *io,
void (*monitor)(struct monitor_msg*))
{
@@ -846,7 +847,7 @@ struct composite_context *libnet_rpc_usermod_send(struct dcerpc_pipe *p,
struct tevent_req *subreq;
/* composite context allocation and setup */
- c = composite_create(mem_ctx, dcerpc_event_context(p));
+ c = composite_create(mem_ctx, ev);
if (c == NULL) return NULL;
s = talloc_zero(c, struct usermod_state);
if (composite_nomem(s, c)) return c;
@@ -854,7 +855,7 @@ struct composite_context *libnet_rpc_usermod_send(struct dcerpc_pipe *p,
c->private_data = s;
/* store parameters in the call structure */
- s->pipe = p;
+ s->binding_handle= b;
s->domain_handle = io->in.domain_handle;
s->change = io->in.change;
s->monitor_fn = monitor;
@@ -871,7 +872,7 @@ struct composite_context *libnet_rpc_usermod_send(struct dcerpc_pipe *p,
/* send the rpc request */
subreq = dcerpc_samr_LookupNames_r_send(s, c->event_ctx,
- p->binding_handle,
+ s->binding_handle,
&s->lookupname);
if (composite_nomem(subreq, c)) return c;
@@ -915,6 +916,7 @@ NTSTATUS libnet_rpc_usermod(struct dcerpc_pipe *p,
TALLOC_CTX *mem_ctx,
struct libnet_rpc_usermod *io)
{
- struct composite_context *c = libnet_rpc_usermod_send(p, mem_ctx, io, NULL);
+ struct composite_context *c = libnet_rpc_usermod_send(mem_ctx, p->conn->event_ctx,
+ p->binding_handle, io, NULL);
return libnet_rpc_usermod_recv(c, mem_ctx, io);
}