From 2d3c928904a804c62206b6bec50d0030becd77f3 Mon Sep 17 00:00:00 2001 From: hrs Date: Fri, 2 Aug 2013 14:44:11 +0000 Subject: Add p_candebug() check to FILEMON_SET_PID ioctl. Discussed with: sjg MFC after: 3 days --- sys/dev/filemon/filemon.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sys/dev/filemon/filemon.c b/sys/dev/filemon/filemon.c index f05710b..c82a816 100644 --- a/sys/dev/filemon/filemon.c +++ b/sys/dev/filemon/filemon.c @@ -150,6 +150,7 @@ filemon_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag __unused, { int error = 0; struct filemon *filemon; + struct proc *p; devfs_get_cdevpriv((void **) &filemon); @@ -163,7 +164,13 @@ filemon_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag __unused, /* Set the monitored process ID. */ case FILEMON_SET_PID: - filemon->pid = *((pid_t *)data); + p = pfind(*((pid_t *)data)); + if (p == NULL) + return (EINVAL); + error = p_candebug(curthread, p); + if (error == 0) + filemon->pid = p->p_pid; + PROC_UNLOCK(p); break; default: -- cgit v1.1