diff options
author | 2016-04-28 20:11:20 +0000 | |
---|---|---|
committer | 2016-04-28 20:11:20 +0000 | |
commit | 11768b0d7ee342849cea429ddb1541b6323d2b64 (patch) | |
tree | 4c9cb0f63c510cfc1f3c239a1a4bd4d95d876e3c | |
parent | Don't add setjmp.S twice. (diff) | |
download | wireguard-openbsd-11768b0d7ee342849cea429ddb1541b6323d2b64.tar.xz wireguard-openbsd-11768b0d7ee342849cea429ddb1541b6323d2b64.zip |
careful study of the holy scrolls reveals that for pselect (and ppoll)
oversized timespecs should be clamped, not rejected.
ok millert
-rw-r--r-- | sys/kern/kern_time.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c index 114e1e986e4..1477ad53d78 100644 --- a/sys/kern/kern_time.c +++ b/sys/kern/kern_time.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_time.c,v 1.96 2015/12/05 10:11:53 tedu Exp $ */ +/* $OpenBSD: kern_time.c,v 1.97 2016/04/28 20:11:20 tedu Exp $ */ /* $NetBSD: kern_time.c,v 1.20 1996/02/18 11:57:06 fvdl Exp $ */ /* @@ -624,9 +624,11 @@ realitexpire(void *arg) int timespecfix(struct timespec *ts) { - if (ts->tv_sec < 0 || ts->tv_sec > 100000000 || + if (ts->tv_sec < 0 || ts->tv_nsec < 0 || ts->tv_nsec >= 1000000000) return (EINVAL); + if (ts->tv_sec > 100000000) + ts->tv_sec = 100000000; return (0); } |