summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Borkmann <dborkman@redhat.com>2013-06-12 12:31:16 +0200
committerDaniel Borkmann <dborkman@redhat.com>2013-06-12 12:31:16 +0200
commit4ee9acd587161df26332fc1e07027b1b527e8100 (patch)
treef21556927896002cb20375e55a671161eb5db2fd
parent93e7cdadf9ddc619c1936303302d4edd50496204 (diff)
stun: close socket before returning in error case
Do not leak the socket resource when bailing out in error case. Found by the coverty scanner. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
-rw-r--r--stun.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/stun.c b/stun.c
index e39e76a..9917c6d 100644
--- a/stun.c
+++ b/stun.c
@@ -100,7 +100,7 @@ static int stun_test(const char *server_ip, int server_port,
sizeof(daddr));
if (ret != len) {
printf("Error sending request (%s)!\n", strerror(errno));
- return -EIO;
+ goto close_error;
}
timeout.tv_sec = TIMEOUT / 1000;
@@ -112,7 +112,7 @@ static int stun_test(const char *server_ip, int server_port,
ret = select(sock + 1, &fdset, NULL, NULL, &timeout);
if (ret <= 0) {
printf("STUN server timeout!\n");
- return -EIO;
+ goto close_error;
}
memset(rpkt, 0, sizeof(rpkt));
@@ -166,6 +166,9 @@ next:
}
return 0;
+close_error:
+ close(sock);
+ return -EIO;
}
int print_stun_probe(char *server, int sport, int tport)