diff options
| author | Andreas Schneider <asn@samba.org> | 2014-04-14 21:57:15 +0200 |
|---|---|---|
| committer | Andreas Schneider <asn@samba.org> | 2014-04-25 14:27:19 +0200 |
| commit | 08ffcf57e38ca19d9a7535d61951dbd292f39bdb (patch) | |
| tree | 9632a491d16b164f927936aceeaf0125dbfed6fd /tests | |
| parent | 1d7993bd4076bf4b15807fcf340976123817bd0b (diff) | |
| download | socket_wrapper-08ffcf57e38ca19d9a7535d61951dbd292f39bdb.tar.gz socket_wrapper-08ffcf57e38ca19d9a7535d61951dbd292f39bdb.tar.xz socket_wrapper-08ffcf57e38ca19d9a7535d61951dbd292f39bdb.zip | |
echo_srv: Fix possible resouce leaks on error in socket_dup().
CID: #17217
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/echo_srv.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/tests/echo_srv.c b/tests/echo_srv.c index 9102a87..8f8f73f 100644 --- a/tests/echo_srv.c +++ b/tests/echo_srv.c @@ -262,6 +262,7 @@ static int socket_dup(int s) rc = getsockname(s2, (struct sockaddr *)&srv_ss2, &srv_ss2_len); if (rc == -1) { perror("getsockname"); + close(s2); return -1; } @@ -270,12 +271,14 @@ static int socket_dup(int s) rc = getpeername(s2, (struct sockaddr *)&cli_ss2, &cli_ss2_len); if (rc == -1) { perror("getpeername"); + close(s2); return -1; } if (cli_ss1_len != cli_ss2_len || srv_ss1_len != srv_ss2_len) { perror("length mismatch"); + close(s2); return -1; } @@ -318,6 +321,7 @@ static int socket_dup(int s) } default: perror("family mismatch"); + close(s2); return -1; } @@ -334,6 +338,7 @@ static int socket_dup(int s) rc = getsockname(s, (struct sockaddr *)&srv_ss3, &srv_ss3_len); if (rc == -1) { perror("getsockname"); + close(s); return -1; } @@ -342,12 +347,14 @@ static int socket_dup(int s) rc = getpeername(s, (struct sockaddr *)&cli_ss3, &cli_ss3_len); if (rc == -1) { perror("getpeername"); + close(s); return -1; } if (cli_ss2_len != cli_ss3_len || srv_ss2_len != srv_ss3_len) { perror("length mismatch"); + close(s); return -1; } @@ -390,6 +397,7 @@ static int socket_dup(int s) } default: perror("family mismatch"); + close(s); return -1; } |
