From 02277f08eeb483757f2d9bc195055742d02b407b Mon Sep 17 00:00:00 2001 From: Gregor Beck Date: Fri, 1 Nov 2013 08:54:27 +0100 Subject: [PATCH 1/3] s3:rpc_client: fix a leaked talloc_stackframe BUG: https://bugzilla.samba.org/show_bug.cgi?id=10241 Signed-off-by: Gregor Beck --- source3/rpc_client/cli_pipe.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c index 48ed92c..1342354 100644 --- a/source3/rpc_client/cli_pipe.c +++ b/source3/rpc_client/cli_pipe.c @@ -2301,7 +2301,8 @@ static NTSTATUS rpc_pipe_get_tcp_port(const char *host, if (ndr_syntax_id_equal(&table->syntax_id, &ndr_table_epmapper.syntax_id)) { *pport = 135; - return NT_STATUS_OK; + status = NT_STATUS_OK; + goto done; } /* open the connection to the endpoint mapper */ -- 1.7.9.5 From 055626b5fb4f991767b2348d880da9bab8db308e Mon Sep 17 00:00:00 2001 From: Gregor Beck Date: Fri, 1 Nov 2013 08:59:53 +0100 Subject: [PATCH 2/3] s3:rpcclient: fix a leaked talloc_stackframe in cmd_epmapper BUG: https://bugzilla.samba.org/show_bug.cgi?id=10241 Signed-off-by: Gregor Beck --- source3/rpcclient/cmd_epmapper.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source3/rpcclient/cmd_epmapper.c b/source3/rpcclient/cmd_epmapper.c index fc844f9..68fa701 100644 --- a/source3/rpcclient/cmd_epmapper.c +++ b/source3/rpcclient/cmd_epmapper.c @@ -51,7 +51,7 @@ static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p, if (!NT_STATUS_IS_OK(status)) { d_fprintf(stderr, "dcerpc_binding_build_tower returned %s\n", nt_errstr(status)); - return status; + goto done; } ZERO_STRUCT(towers); @@ -64,13 +64,14 @@ static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p, if (!NT_STATUS_IS_OK(status)) { d_fprintf(stderr, "dcerpc_epm_Map returned %s\n", nt_errstr(status)); - return status; + goto done; } if (result != EPMAPPER_STATUS_OK) { d_fprintf(stderr, "epm_Map returned %u (0x%08X)\n", result, result); - return NT_STATUS_UNSUCCESSFUL; + status = NT_STATUS_UNSUCCESSFUL; + goto done; } d_printf("num_tower[%u]\n", num_towers); @@ -91,8 +92,9 @@ static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p, d_printf("tower[%u] %s\n", i, dcerpc_binding_string(tmp_ctx, binding)); } - - return NT_STATUS_OK; +done: + TALLOC_FREE(tmp_ctx); + return status; } static NTSTATUS cmd_epmapper_lookup(struct rpc_pipe_client *p, -- 1.7.9.5 From b5308b852125fc502df79f8ff6dd539768910937 Mon Sep 17 00:00:00 2001 From: Gregor Beck Date: Fri, 1 Nov 2013 09:02:48 +0100 Subject: [PATCH 3/3] rpc_server3: rpc_create_tcpip_sockets() may leak talloc_stackframe on failure BUG: https://bugzilla.samba.org/show_bug.cgi?id=10241 Signed-off-by: Gregor Beck --- source3/rpc_server/rpc_sock_helper.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/source3/rpc_server/rpc_sock_helper.c b/source3/rpc_server/rpc_sock_helper.c index 650dd9d..8f371b8 100644 --- a/source3/rpc_server/rpc_sock_helper.c +++ b/source3/rpc_server/rpc_sock_helper.c @@ -142,7 +142,7 @@ NTSTATUS rpc_create_tcpip_sockets(const struct ndr_interface_table *iface, p); if (!NT_STATUS_IS_OK(status)) { close(fd); - return status; + goto done; } } } @@ -201,13 +201,15 @@ NTSTATUS rpc_setup_tcpip_sockets(struct tevent_context *ev_ctx, sizeof(struct sockaddr_storage), &bind_addr); if (rc < 0) { - return NT_STATUS_NO_MEMORY; + status = NT_STATUS_NO_MEMORY; + goto done; } addr = tsocket_address_inet_addr_string(bind_addr, tmp_ctx); if (addr == NULL) { - return NT_STATUS_NO_MEMORY; + status = NT_STATUS_NO_MEMORY; + goto done; } status = dcerpc_binding_vector_add_port(iface, @@ -215,7 +217,7 @@ NTSTATUS rpc_setup_tcpip_sockets(struct tevent_context *ev_ctx, addr, p); if (!NT_STATUS_IS_OK(status)) { - return status; + goto done; } } } @@ -247,7 +249,8 @@ NTSTATUS rpc_setup_tcpip_sockets(struct tevent_context *ev_ctx, &ss, port); if (p == 0) { - return NT_STATUS_UNSUCCESSFUL; + status = NT_STATUS_UNSUCCESSFUL; + goto done; } if (bvec != NULL) { @@ -256,7 +259,7 @@ NTSTATUS rpc_setup_tcpip_sockets(struct tevent_context *ev_ctx, sock_tok, p); if (!NT_STATUS_IS_OK(status)) { - return status; + goto done; } } } -- 1.7.9.5