s3-epmapper: Make sure we work on a description duplicate.
authorAndreas Schneider <asn@samba.org>
Thu, 24 Mar 2011 13:39:56 +0000 (14:39 +0100)
committerSimo Sorce <idra@samba.org>
Thu, 24 Mar 2011 18:57:12 +0000 (14:57 -0400)
source3/rpc_server/epmapper/srv_epmapper.c

index 2e3e5d2173ff6d62a6ecf44183e404623ea48914..f7f3617f15d1629ed58c344a25f36dce3e3b75b9 100644 (file)
@@ -192,7 +192,10 @@ static uint32_t build_ep_list(TALLOC_CTX *mem_ctx,
                                                        iface->iface->name);
                        eps[total].syntax_id = iface->iface->syntax_id;
 
-                       description = d->ep_description;
+                       description = dcerpc_binding_dup(mem_ctx, d->ep_description);
+                       if (description == NULL) {
+                               return 0;
+                       }
                        description->object = iface->iface->syntax_id;
                        if (description->transport == NCACN_IP_TCP &&
                            srv_addr != NULL &&
@@ -204,6 +207,7 @@ static uint32_t build_ep_list(TALLOC_CTX *mem_ctx,
                        status = dcerpc_binding_build_tower(eps,
                                                            description,
                                                            &eps[total].ep);
+                       TALLOC_FREE(description);
                        if (NT_STATUS_IS_ERR(status)) {
                                DEBUG(1, ("Unable to build tower for %s\n",
                                          iface->iface->name));