From 832e4110f9f1ac0198fa5ef43f51a2950a70150d Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Mon, 2 Feb 2015 19:26:52 +0100 Subject: [PATCH] close socket on error --- virtualsmartcard/src/vpcd/vpcd.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/virtualsmartcard/src/vpcd/vpcd.c b/virtualsmartcard/src/vpcd/vpcd.c index 3a88efc..55bd68c 100644 --- a/virtualsmartcard/src/vpcd/vpcd.c +++ b/virtualsmartcard/src/vpcd/vpcd.c @@ -96,12 +96,12 @@ static int opensock(unsigned short port) if (sock < 0) return -1; - if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &yes, sizeof yes) != 0) - return -1; + if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &yes, sizeof yes) != 0) + goto err; #if HAVE_DECL_SO_NOSIGPIPE if (setsockopt(sock, SOL_SOCKET, SO_NOSIGPIPE, (void *) &yes, sizeof yes) != 0) - return -1; + goto err; #endif memset(&server_sockaddr, 0, sizeof server_sockaddr); @@ -110,17 +110,18 @@ static int opensock(unsigned short port) server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY); if (bind(sock, (struct sockaddr *) &server_sockaddr, - sizeof server_sockaddr) != 0) { - close(sock); - return -1; - } + sizeof server_sockaddr) != 0) + goto err; - if (listen(sock, 0) != 0) { - close(sock); - return -1; - } + if (listen(sock, 0) != 0) + goto err; return sock; + +err: + close(sock); + + return -1; } static int connectsock(const char *hostname, unsigned short port)