diff options
author | Damien Miller <djm@mindrot.org> | 2003-05-23 18:44:41 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2003-05-23 18:44:41 +1000 |
commit | 08293fa435972a1073b604f02dc9d2441c7da788 (patch) | |
tree | 9749113429d4e6b04bd4e06d4664782ae34b1b9f | |
parent | fbf486b4a6e0f39b3d6533a2c18d1a120e98b83c (diff) |
- djm@cvs.openbsd.org 2003/05/23 08:29:30
[sshconnect.c]
fix leak; ok markus@
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sshconnect.c | 16 |
2 files changed, 13 insertions, 8 deletions
@@ -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 | ||
15 | 20030520 | 18 | 20030520 |
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" |
16 | RCSID("$OpenBSD: sshconnect.c,v 1.141 2003/05/15 14:55:25 djm Exp $"); | 16 | RCSID("$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 | /* |