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,
}
(*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++;