summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2014-04-14 21:57:15 +0200
committerAndreas Schneider <asn@samba.org>2014-04-25 14:27:19 +0200
commit08ffcf57e38ca19d9a7535d61951dbd292f39bdb (patch)
tree9632a491d16b164f927936aceeaf0125dbfed6fd /tests
parent1d7993bd4076bf4b15807fcf340976123817bd0b (diff)
downloadsocket_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.c8
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;
}