aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ofw
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2007-12-23 11:31:24 +0000
committerMarius Strobl <marius@FreeBSD.org>2007-12-23 11:31:24 +0000
commit87b8309953cabb32e835e2ccf54ca104bb69f089 (patch)
tree8a2ecbecd441a0724641cab60b1a9db0f7a64953 /sys/dev/ofw
parentc24790b065427ff5b9d616acd54f8eb2576b3f2a (diff)
Notes
Diffstat (limited to 'sys/dev/ofw')
-rw-r--r--sys/dev/ofw/openpromio.c10
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;