summaryrefslogtreecommitdiff
path: root/gpsd.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2012-05-10 16:43:18 -0400
committerEric S. Raymond <esr@thyrsus.com>2012-05-10 16:43:18 -0400
commit7e08bb2f93082fe0eba02dbc52b5692c49682279 (patch)
tree5910d5e166c866556f392921fe66639252047232 /gpsd.c
parent33b509515f64d2a2ee5bf25e6aa38be36b0ca193 (diff)
downloadgpsd-7e08bb2f93082fe0eba02dbc52b5692c49682279.tar.gz
Plug a socket leak. This is Coverity defect #11.
Diffstat (limited to 'gpsd.c')
-rw-r--r--gpsd.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gpsd.c b/gpsd.c
index 7f977dde..142b5ffa 100644
--- a/gpsd.c
+++ b/gpsd.c
@@ -451,6 +451,7 @@ static int passivesock_af(int af, char *service, char *tcp_or_udp, int qlen)
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&one,
(int)sizeof(one)) == -1) {
gpsd_report(LOG_ERROR, "Error: SETSOCKOPT SO_REUSEADDR\n");
+ (void)close(s);
return -1;
}
if (bind(s, &sat.sa, sin_len) < 0) {
@@ -459,10 +460,12 @@ static int passivesock_af(int af, char *service, char *tcp_or_udp, int qlen)
if (errno == EADDRINUSE) {
gpsd_report(LOG_ERROR, "maybe gpsd is already running!\n");
}
+ (void)close(s);
return -1;
}
if (type == SOCK_STREAM && listen(s, qlen) == -1) {
gpsd_report(LOG_ERROR, "can't listen on port %s\n", service);
+ (void)close(s);
return -1;
}