summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2016-04-28 20:11:20 +0000
committertedu <tedu@openbsd.org>2016-04-28 20:11:20 +0000
commit11768b0d7ee342849cea429ddb1541b6323d2b64 (patch)
tree4c9cb0f63c510cfc1f3c239a1a4bd4d95d876e3c
parentDon't add setjmp.S twice. (diff)
downloadwireguard-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.c6
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);
}