diff options
| author | gwr <gwr@NetBSD.org> | 1997-10-21 15:17:31 +0000 |
|---|---|---|
| committer | gwr <gwr@NetBSD.org> | 1997-10-21 15:17:31 +0000 |
| commit | 08895654995483dded7e95d8ecb6b855cf7df368 (patch) | |
| tree | 601e22b05efd0da145b5c51c3e948419eb1284de /sys/dev | |
| parent | b021feb71d5b0da1fb74239bb30de46060547cc0 (diff) | |
Clean up kbdioctl():
* Make sure all uses of the data pointer are type-cast appropriately.
* Eliminate the super-user check in the KIOCSKEY case (back as it was).
* Return ENOTTY if the ioctl command code is unrecognized.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/sun/kbd.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/sys/dev/sun/kbd.c b/sys/dev/sun/kbd.c index 301a8333f34..958580e61c6 100644 --- a/sys/dev/sun/kbd.c +++ b/sys/dev/sun/kbd.c @@ -1,4 +1,4 @@ -/* $NetBSD: kbd.c,v 1.15 1997/10/03 23:04:46 gwr Exp $ */ +/* $NetBSD: kbd.c,v 1.16 1997/10/21 15:17:31 gwr Exp $ */ /* * Copyright (c) 1992, 1993 @@ -399,7 +399,6 @@ kbdioctl(dev, cmd, data, flag, p) { struct kbd_softc *k; struct kbd_state *ks; - int *ip; int error = 0; k = kbd_cd.cd_devs[minor(dev)]; @@ -408,16 +407,14 @@ kbdioctl(dev, cmd, data, flag, p) switch (cmd) { case KIOCTRANS: /* Set translation mode */ - ip = (int *)data; /* We only support "raw" mode on /dev/kbd */ - if (*ip != TR_UNTRANS_EVENT) + if (*(int *)data != TR_UNTRANS_EVENT) error = EINVAL; break; case KIOCGTRANS: /* Get translation mode */ - ip = (int *)data; /* We only support "raw" mode on /dev/kbd */ - *ip = TR_UNTRANS_EVENT; + *(int *)data = TR_UNTRANS_EVENT; break; #ifdef KIOCGETKEY @@ -427,30 +424,25 @@ kbdioctl(dev, cmd, data, flag, p) #endif KIOCGETKEY */ case KIOCSKEY: /* Set keymap entry */ - /* Don't let just anyone hose the keyboard. */ - if ((error = suser(p->p_ucred, &p->p_acflag)) != 0) - return (error); /* fallthrough */ case KIOCGKEY: /* Get keymap entry */ error = kbd_iockeymap(ks, cmd, (struct kiockeymap *)data); break; case KIOCCMD: /* Send a command to the keyboard */ - error = kbd_docmd(*((int *)data), 1); + error = kbd_docmd(*(int *)data, 1); break; case KIOCTYPE: /* Get keyboard type */ - ip = (int *)data; - *ip = ks->kbd_id; + *(int *)data = ks->kbd_id; break; case KIOCSDIRECT: /* where to send input */ - ip = (int *)data; - k->k_evmode = *ip; + k->k_evmode = *(int *)data; break; case KIOCLAYOUT: /* Get keyboard layout */ - *data = ks->kbd_layout; + *(int *)data = ks->kbd_layout; break; case KIOCSLED: @@ -469,11 +461,13 @@ kbdioctl(dev, cmd, data, flag, p) break; case TIOCSPGRP: - ip = (int *)data; - if (*ip != k->k_events.ev_io->p_pgid) + if (*(int *)data != k->k_events.ev_io->p_pgid) error = EPERM; break; + default: + error = ENOTTY; + break; } return (error); |
