From e560fd604284180f3ab522993c5b8e6f424ef1d9 Mon Sep 17 00:00:00 2001 From: Martin Josefsson Date: Fri, 13 Jun 2003 16:56:51 +0000 Subject: Fix possible doubleclose of sockfd. This shouldn't break anything, things were already broken. --- libiptc/libiptc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libiptc') diff --git a/libiptc/libiptc.c b/libiptc/libiptc.c index fa735637..0dad6f48 100644 --- a/libiptc/libiptc.c +++ b/libiptc/libiptc.c @@ -1,4 +1,4 @@ -/* Library which manipulates firewall rules. Version $Revision: 1.36 $ */ +/* Library which manipulates firewall rules. Version $Revision: 1.37 $ */ /* Architecture of firewall rules is as follows: * @@ -234,8 +234,10 @@ TC_INIT(const char *tablename) iptc_fn = TC_INIT; - if (sockfd != -1) + if (sockfd != -1) { close(sockfd); + sockfd = -1; + } if (strlen(tablename) >= TABLE_MAXNAMELEN) { errno = EINVAL; @@ -255,6 +257,7 @@ TC_INIT(const char *tablename) if ((h = alloc_handle(info.name, info.size, info.num_entries)) == NULL) { close(sockfd); + sockfd = -1; return NULL; } @@ -289,6 +292,7 @@ TC_INIT(const char *tablename) if (getsockopt(sockfd, TC_IPPROTO, SO_GET_ENTRIES, &h->entries, &tmp) < 0) { close(sockfd); + sockfd = -1; free(h); return NULL; } @@ -301,6 +305,7 @@ void TC_FREE(TC_HANDLE_T *h) { close(sockfd); + sockfd = -1; if ((*h)->cache_chain_heads) free((*h)->cache_chain_heads); free(*h); -- cgit v1.2.3