diff options
author | dtucker@openbsd.org@openbsd.org <dtucker@openbsd.org@openbsd.org> | 2017-11-25 06:46:22 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2017-11-28 12:01:49 +1100 |
commit | 5db6fbf1438b108e5df3e79a1b4de544373bc2d4 (patch) | |
tree | 95f5df8248cca30df3ab00e70e80d28410be760c /ssh-keyscan.c | |
parent | 2d638e986085bdf1a40310ed6e2307463db96ea0 (diff) |
upstream commit
Add monotime_ts and monotime_tv that return monotonic
timespec and timeval respectively. Replace calls to gettimeofday() in packet
timing with monotime_tv so that the callers will work over a clock step.
Should prevent integer overflow during clock steps reported by wangle6 at
huawei.com. "I like" markus@
OpenBSD-Commit-ID: 74d684264814ff806f197948b87aa732cb1b0b8a
Diffstat (limited to 'ssh-keyscan.c')
-rw-r--r-- | ssh-keyscan.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/ssh-keyscan.c b/ssh-keyscan.c index 258123ae8..a816a220e 100644 --- a/ssh-keyscan.c +++ b/ssh-keyscan.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-keyscan.c,v 1.115 2017/06/30 04:17:23 dtucker Exp $ */ | 1 | /* $OpenBSD: ssh-keyscan.c,v 1.116 2017/11/25 06:46:22 dtucker Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>. | 3 | * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>. |
4 | * | 4 | * |
@@ -377,7 +377,7 @@ conalloc(char *iname, char *oname, int keytype) | |||
377 | fdcon[s].c_len = 4; | 377 | fdcon[s].c_len = 4; |
378 | fdcon[s].c_off = 0; | 378 | fdcon[s].c_off = 0; |
379 | fdcon[s].c_keytype = keytype; | 379 | fdcon[s].c_keytype = keytype; |
380 | gettimeofday(&fdcon[s].c_tv, NULL); | 380 | monotime_tv(&fdcon[s].c_tv); |
381 | fdcon[s].c_tv.tv_sec += timeout; | 381 | fdcon[s].c_tv.tv_sec += timeout; |
382 | TAILQ_INSERT_TAIL(&tq, &fdcon[s], c_link); | 382 | TAILQ_INSERT_TAIL(&tq, &fdcon[s], c_link); |
383 | FD_SET(s, read_wait); | 383 | FD_SET(s, read_wait); |
@@ -411,7 +411,7 @@ static void | |||
411 | contouch(int s) | 411 | contouch(int s) |
412 | { | 412 | { |
413 | TAILQ_REMOVE(&tq, &fdcon[s], c_link); | 413 | TAILQ_REMOVE(&tq, &fdcon[s], c_link); |
414 | gettimeofday(&fdcon[s].c_tv, NULL); | 414 | monotime_tv(&fdcon[s].c_tv); |
415 | fdcon[s].c_tv.tv_sec += timeout; | 415 | fdcon[s].c_tv.tv_sec += timeout; |
416 | TAILQ_INSERT_TAIL(&tq, &fdcon[s], c_link); | 416 | TAILQ_INSERT_TAIL(&tq, &fdcon[s], c_link); |
417 | } | 417 | } |
@@ -545,7 +545,7 @@ conloop(void) | |||
545 | con *c; | 545 | con *c; |
546 | int i; | 546 | int i; |
547 | 547 | ||
548 | gettimeofday(&now, NULL); | 548 | monotime_tv(&now); |
549 | c = TAILQ_FIRST(&tq); | 549 | c = TAILQ_FIRST(&tq); |
550 | 550 | ||
551 | if (c && (c->c_tv.tv_sec > now.tv_sec || | 551 | if (c && (c->c_tv.tv_sec > now.tv_sec || |