summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2016-07-23 08:02:45 +0000
committerkib <kib@FreeBSD.org>2016-07-23 08:02:45 +0000
commit46354a4b7a2ac3c8657be258c0fb2ab3f73e273c (patch)
tree24c70f08309544a76450f7caacbfc9f0db2bbe1c
parent50a74c885b2a6cfd6445aba6536864966f6e655e (diff)
downloadFreeBSD-src-46354a4b7a2ac3c8657be258c0fb2ab3f73e273c.zip
FreeBSD-src-46354a4b7a2ac3c8657be258c0fb2ab3f73e273c.tar.gz
MFC r302936:
Explicitely check for the valid range of file descriptor values.
-rw-r--r--sys/kern/kern_event.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index a0c4fa4..e4bf40b 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -1083,8 +1083,11 @@ kqueue_register(struct kqueue *kq, struct kevent *kev, struct thread *td, int wa
findkn:
if (fops->f_isfd) {
KASSERT(td != NULL, ("td is NULL"));
- error = fget(td, kev->ident,
- cap_rights_init(&rights, CAP_EVENT), &fp);
+ if (kev->ident > INT_MAX)
+ error = EBADF;
+ else
+ error = fget(td, kev->ident,
+ cap_rights_init(&rights, CAP_EVENT), &fp);
if (error)
goto done;
OpenPOWER on IntegriCloud