diff options
| author | Marius Strobl <marius@FreeBSD.org> | 2007-12-23 11:31:24 +0000 |
|---|---|---|
| committer | Marius Strobl <marius@FreeBSD.org> | 2007-12-23 11:31:24 +0000 |
| commit | 87b8309953cabb32e835e2ccf54ca104bb69f089 (patch) | |
| tree | 8a2ecbecd441a0724641cab60b1a9db0f7a64953 /sys/dev/ofw | |
| parent | c24790b065427ff5b9d616acd54f8eb2576b3f2a (diff) | |
Notes
Diffstat (limited to 'sys/dev/ofw')
| -rw-r--r-- | sys/dev/ofw/openpromio.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/dev/ofw/openpromio.c b/sys/dev/ofw/openpromio.c index ca6aba741af7..cb7343ff6d70 100644 --- a/sys/dev/ofw/openpromio.c +++ b/sys/dev/ofw/openpromio.c @@ -101,12 +101,17 @@ openprom_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flags, char *buf; int error; + if ((flags & FREAD) == 0) + return (EPERM); + prop = buf = NULL; error = 0; - oprom = *(void **)data; switch (cmd) { case OPROMCHILD: case OPROMNEXT: + if (data == NULL || *(void **)data == NULL) + return (EINVAL); + oprom = *(void **)data; error = copyin(&oprom->oprom_size, &len, sizeof(len)); if (error != 0) break; @@ -135,6 +140,9 @@ openprom_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flags, break; case OPROMGETPROP: case OPROMNXTPROP: + if (data == NULL || *(void **)data == NULL) + return (EINVAL); + oprom = *(void **)data; error = copyin(&oprom->oprom_size, &len, sizeof(len)); if (error != 0) break; |
