summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Krawczyk <pawel.krawczyk@hush.com>2015-06-19 14:30:08 +0000
committerPaweł Krawczyk <pawel.krawczyk@hush.com>2015-06-19 14:30:08 +0000
commitbf16da284a72d808e4ffde4a9c2d9a06d7402ec9 (patch)
tree44d5f2f66b161c2d1cf56275f474202332848efa
parent9ee4b2986993479cb9d3d99daaf5d43b70bfe2ad (diff)
downloadpam_tacplus-bf16da284a72d808e4ffde4a9c2d9a06d7402ec9.tar.gz
pam_tacplus-bf16da284a72d808e4ffde4a9c2d9a06d7402ec9.zip
close socket if any operation fails
-rw-r--r--libtac/lib/connect.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libtac/lib/connect.c b/libtac/lib/connect.c
index ab42377..b39c210 100644
--- a/libtac/lib/connect.c
+++ b/libtac/lib/connect.c
@@ -98,6 +98,7 @@ int tac_connect_single(struct addrinfo *server, const char *key, struct addrinfo
if( fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1 ) {
TACSYSLOG((LOG_ERR, "%s: cannot set socket non blocking",\
__FUNCTION__))
+ close(fd)
return LIBTAC_STATUS_CONN_ERR;
}
@@ -106,6 +107,7 @@ int tac_connect_single(struct addrinfo *server, const char *key, struct addrinfo
if (bind(fd, srcaddr->ai_addr, srcaddr->ai_addrlen) < 0) {
TACSYSLOG((LOG_ERR, "%s: Failed to bind source address: %s",
__FUNCTION__, strerror(errno)))
+ close(fd)
return LIBTAC_STATUS_CONN_ERR;
}
}
@@ -115,6 +117,7 @@ int tac_connect_single(struct addrinfo *server, const char *key, struct addrinfo
if((rc == -1) && (errno != EINPROGRESS) && (errno != 0)) {
TACSYSLOG((LOG_ERR,\
"%s: connection to %s failed: %m", __FUNCTION__, ip))
+ close(fd)
return LIBTAC_STATUS_CONN_ERR;
}