diff options
| author | Gregor Beck <gbeck@sernet.de> | 2013-11-01 09:02:48 +0100 |
|---|---|---|
| committer | Andreas Schneider <asn@cryptomilk.org> | 2013-11-04 12:30:26 +0100 |
| commit | e2d6431cd4d3dee6a777e6c1063b42b8a0fa0cef (patch) | |
| tree | 3a4bdb2c62aee857a2494d5e977a9e3cb30c5729 /source3 | |
| parent | 73062533e0cf5adddafed637327455ae52cab486 (diff) | |
| download | samba-e2d6431cd4d3dee6a777e6c1063b42b8a0fa0cef.tar.gz samba-e2d6431cd4d3dee6a777e6c1063b42b8a0fa0cef.tar.xz samba-e2d6431cd4d3dee6a777e6c1063b42b8a0fa0cef.zip | |
s3:rpc_server: 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 <gbeck@sernet.de>
Reviewed-by: Andreas Schneider <asn@samba.org>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Mon Nov 4 12:30:27 CET 2013 on sn-devel-104
Diffstat (limited to 'source3')
| -rw-r--r-- | source3/rpc_server/rpc_sock_helper.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/source3/rpc_server/rpc_sock_helper.c b/source3/rpc_server/rpc_sock_helper.c index 650dd9d23c..8f371b8e90 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; } } } |
