diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-01-30 23:09:50 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-02-13 11:54:14 +0100 |
commit | 352d0963909793f5fd39c25c17363f284e72201c (patch) | |
tree | fd516fbe9b3c5fa1d3833b2879410c66ff9060fa | |
parent | 5e3d72e738cacfbe1d641d7aa0ff7cc67979adf0 (diff) | |
download | samba-352d0963909793f5fd39c25c17363f284e72201c.tar.gz samba-352d0963909793f5fd39c25c17363f284e72201c.tar.xz samba-352d0963909793f5fd39c25c17363f284e72201c.zip |
s3:rpc_server: make use of dcerpc_parse_binding() to create a binding.
This makes sure binding is talloc'ed.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
-rw-r--r-- | source3/rpc_server/rpc_ep_register.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/source3/rpc_server/rpc_ep_register.c b/source3/rpc_server/rpc_ep_register.c index 18ef9abde7..8fe5ecce82 100644 --- a/source3/rpc_server/rpc_ep_register.c +++ b/source3/rpc_server/rpc_ep_register.c @@ -171,7 +171,7 @@ static void rpc_ep_monitor_loop(struct tevent_req *subreq) struct rpc_ep_register_state *state = tevent_req_callback_data(subreq, struct rpc_ep_register_state); struct policy_handle entry_handle; - struct dcerpc_binding map_binding; + struct dcerpc_binding *map_binding; struct epm_twr_p_t towers[10]; struct epm_twr_t *map_tower; uint32_t num_towers = 0; @@ -199,11 +199,14 @@ static void rpc_ep_monitor_loop(struct tevent_req *subreq) } /* Create map tower */ - ZERO_STRUCT(map_binding); - map_binding.transport = NCACN_NP; - map_binding.object = state->iface->syntax_id; - map_binding.host = ""; - map_binding.endpoint = ""; + status = dcerpc_parse_binding(tmp_ctx, "ncacn_np:", &map_binding); + if (!NT_STATUS_IS_OK(status)) { + talloc_free(tmp_ctx); + talloc_free(state); + return; + } + + map_binding->object = state->iface->syntax_id; map_tower = talloc_zero(tmp_ctx, struct epm_twr_t); if (map_tower == NULL) { @@ -212,7 +215,7 @@ static void rpc_ep_monitor_loop(struct tevent_req *subreq) return; } - status = dcerpc_binding_build_tower(map_tower, &map_binding, + status = dcerpc_binding_build_tower(map_tower, map_binding, &map_tower->tower); if (!NT_STATUS_IS_OK(status)) { talloc_free(tmp_ctx); |