aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/sys_generic.c
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2018-11-01 23:46:23 +0000
committerConrad Meyer <cem@FreeBSD.org>2018-11-01 23:46:23 +0000
commit78c2a9806ea5035f4ea005a877987feb3e365e7f (patch)
treea154f02bacc355f7a9d8e0dbd1f55e23da46af23 /sys/kern/sys_generic.c
parent209fcf8ed92ea4fdaa7b39ba1d42d3031b149511 (diff)
Notes
Diffstat (limited to 'sys/kern/sys_generic.c')
-rw-r--r--sys/kern/sys_generic.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index 0e8e173654c5c..300c80930ca53 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -1339,6 +1339,13 @@ kern_poll(struct thread *td, struct pollfd *ufds, u_int nfds,
} else
sbt = -1;
+ /*
+ * This is kinda bogus. We have fd limits, but that is not
+ * really related to the size of the pollfd array. Make sure
+ * we let the process use at least FD_SETSIZE entries and at
+ * least enough for the system-wide limits. We want to be reasonably
+ * safe, but not overly restrictive.
+ */
if (nfds > maxfilesperproc && nfds > FD_SETSIZE)
return (EINVAL);
if (nfds > nitems(stackfds))