From: djm Date: Fri, 23 May 2003 08:44:41 +0000 (+0000) Subject: - djm@cvs.openbsd.org 2003/05/23 08:29:30 X-Git-Tag: PRE_KRB4_REMOVAL~135 X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/commitdiff_plain/da54f5bec729d5b5af2109c0d6703c045f4bef2d - djm@cvs.openbsd.org 2003/05/23 08:29:30 [sshconnect.c] fix leak; ok markus@ --- diff --git a/ChangeLog b/ChangeLog index 397605c7..b7deee7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,9 @@ - jmc@cvs.openbsd.org 2003/05/20 12:09:31 [ssh.1 ssh_config.5 sshd.8 sshd_config.5 ssh-keygen.1] new sentence, new line + - djm@cvs.openbsd.org 2003/05/23 08:29:30 + [sshconnect.c] + fix leak; ok markus@ 20030520 - (djm) OpenBSD CVS Sync diff --git a/sshconnect.c b/sshconnect.c index 8aac221d..dfa2e5b0 100644 --- a/sshconnect.c +++ b/sshconnect.c @@ -13,7 +13,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: sshconnect.c,v 1.141 2003/05/15 14:55:25 djm Exp $"); +RCSID("$OpenBSD: sshconnect.c,v 1.142 2003/05/23 08:29:30 djm Exp $"); #include @@ -225,7 +225,7 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr, fd_set *fdset; struct timeval tv; socklen_t optlen; - int fdsetsz, optval, rc; + int fdsetsz, optval, rc, result = -1; if (timeout <= 0) return (connect(sockfd, serv_addr, addrlen)); @@ -257,11 +257,11 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr, case 0: /* Timed out */ errno = ETIMEDOUT; - return (-1); + break; case -1: /* Select error */ debug("select: %s", strerror(errno)); - return (-1); + break; case 1: /* Completed or failed */ optval = 0; @@ -269,18 +269,20 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr, if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, &optlen) == -1) debug("getsockopt: %s", strerror(errno)); - return (-1); + break; if (optval != 0) { errno = optval; - return (-1); + break; } + result = 0; break; default: /* Should not occur */ fatal("Bogus return (%d) from select()", rc); } - return (0); + xfree(fdset); + return (result); } /*