diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-02-04 02:33:03 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-02-11 18:30:55 +0100 |
commit | da9b3c15d52cd3b2acccd376a41bea828292668d (patch) | |
tree | a4e0bdd34f78b1568ae0bbf61f2d157650137ac1 | |
parent | 47fa7c83a2d9614973c3aa0addba4165055b9f75 (diff) | |
download | samba-da9b3c15d52cd3b2acccd376a41bea828292668d.tar.gz samba-da9b3c15d52cd3b2acccd376a41bea828292668d.tar.xz samba-da9b3c15d52cd3b2acccd376a41bea828292668d.zip |
s4:rpc_server/epmapper: make use of dcerpc_binding_dup() in build_ep_list()
We should not alter the callers binding.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
Autobuild-User(master): Günther Deschner <gd@samba.org>
Autobuild-Date(master): Tue Feb 11 18:30:55 CET 2014 on sn-devel-104
-rw-r--r-- | source4/rpc_server/epmapper/rpc_epmapper.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/source4/rpc_server/epmapper/rpc_epmapper.c b/source4/rpc_server/epmapper/rpc_epmapper.c index 371a3b5dd53..58cdc0f9a2e 100644 --- a/source4/rpc_server/epmapper/rpc_epmapper.c +++ b/source4/rpc_server/epmapper/rpc_epmapper.c @@ -50,9 +50,10 @@ static uint32_t build_ep_list(TALLOC_CTX *mem_ctx, for (d=endpoint_list; d; d=d->next) { struct dcesrv_if_list *iface; - struct dcerpc_binding *description; for (iface=d->interface_list;iface;iface=iface->next) { + struct dcerpc_binding *description; + (*eps) = talloc_realloc(mem_ctx, *eps, struct dcesrv_ep_iface, @@ -62,12 +63,18 @@ static uint32_t build_ep_list(TALLOC_CTX *mem_ctx, } (*eps)[total].name = iface->iface.name; - description = d->ep_description; + description = dcerpc_binding_dup(*eps, d->ep_description); + if (description == NULL) { + return 0; + } + description->object = iface->iface.syntax_id; status = dcerpc_binding_build_tower(*eps, description, &(*eps)[total].ep); - if (NT_STATUS_IS_ERR(status)) { - DEBUG(1, ("Unable to build tower for %s\n", iface->iface.name)); + TALLOC_FREE(description); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(1, ("Unable to build tower for %s - %s\n", + iface->iface.name, nt_errstr(status))); continue; } total++; |