diff options
-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++; |