summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2003-05-23 18:44:41 +1000
committerDamien Miller <djm@mindrot.org>2003-05-23 18:44:41 +1000
commit08293fa435972a1073b604f02dc9d2441c7da788 (patch)
tree9749113429d4e6b04bd4e06d4664782ae34b1b9f
parentfbf486b4a6e0f39b3d6533a2c18d1a120e98b83c (diff)
- djm@cvs.openbsd.org 2003/05/23 08:29:30
[sshconnect.c] fix leak; ok markus@
-rw-r--r--ChangeLog5
-rw-r--r--sshconnect.c16
2 files changed, 13 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index d00d04263..083314ccb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,9 @@
11 - jmc@cvs.openbsd.org 2003/05/20 12:09:31 11 - jmc@cvs.openbsd.org 2003/05/20 12:09:31
12 [ssh.1 ssh_config.5 sshd.8 sshd_config.5 ssh-keygen.1] 12 [ssh.1 ssh_config.5 sshd.8 sshd_config.5 ssh-keygen.1]
13 new sentence, new line 13 new sentence, new line
14 - djm@cvs.openbsd.org 2003/05/23 08:29:30
15 [sshconnect.c]
16 fix leak; ok markus@
14 17
1520030520 1820030520
16 - (djm) OpenBSD CVS Sync 19 - (djm) OpenBSD CVS Sync
@@ -1599,4 +1602,4 @@
1599 save auth method before monitor_reset_key_state(); bugzilla bug #284; 1602 save auth method before monitor_reset_key_state(); bugzilla bug #284;
1600 ok provos@ 1603 ok provos@
1601 1604
1602$Id: ChangeLog,v 1.2747 2003/05/23 08:44:23 djm Exp $ 1605$Id: ChangeLog,v 1.2748 2003/05/23 08:44:41 djm Exp $
diff --git a/sshconnect.c b/sshconnect.c
index 8aac221d3..dfa2e5b09 100644
--- a/sshconnect.c
+++ b/sshconnect.c
@@ -13,7 +13,7 @@
13 */ 13 */
14 14
15#include "includes.h" 15#include "includes.h"
16RCSID("$OpenBSD: sshconnect.c,v 1.141 2003/05/15 14:55:25 djm Exp $"); 16RCSID("$OpenBSD: sshconnect.c,v 1.142 2003/05/23 08:29:30 djm Exp $");
17 17
18#include <openssl/bn.h> 18#include <openssl/bn.h>
19 19
@@ -225,7 +225,7 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
225 fd_set *fdset; 225 fd_set *fdset;
226 struct timeval tv; 226 struct timeval tv;
227 socklen_t optlen; 227 socklen_t optlen;
228 int fdsetsz, optval, rc; 228 int fdsetsz, optval, rc, result = -1;
229 229
230 if (timeout <= 0) 230 if (timeout <= 0)
231 return (connect(sockfd, serv_addr, addrlen)); 231 return (connect(sockfd, serv_addr, addrlen));
@@ -257,11 +257,11 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
257 case 0: 257 case 0:
258 /* Timed out */ 258 /* Timed out */
259 errno = ETIMEDOUT; 259 errno = ETIMEDOUT;
260 return (-1); 260 break;
261 case -1: 261 case -1:
262 /* Select error */ 262 /* Select error */
263 debug("select: %s", strerror(errno)); 263 debug("select: %s", strerror(errno));
264 return (-1); 264 break;
265 case 1: 265 case 1:
266 /* Completed or failed */ 266 /* Completed or failed */
267 optval = 0; 267 optval = 0;
@@ -269,18 +269,20 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
269 if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, 269 if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval,
270 &optlen) == -1) 270 &optlen) == -1)
271 debug("getsockopt: %s", strerror(errno)); 271 debug("getsockopt: %s", strerror(errno));
272 return (-1); 272 break;
273 if (optval != 0) { 273 if (optval != 0) {
274 errno = optval; 274 errno = optval;
275 return (-1); 275 break;
276 } 276 }
277 result = 0;
277 break; 278 break;
278 default: 279 default:
279 /* Should not occur */ 280 /* Should not occur */
280 fatal("Bogus return (%d) from select()", rc); 281 fatal("Bogus return (%d) from select()", rc);
281 } 282 }
282 283
283 return (0); 284 xfree(fdset);
285 return (result);
284} 286}
285 287
286/* 288/*