applicom: Fix an unchecked user ioctl range and an error return
Closes bug #11408 by checking the card index range for command 0 Fixes the ioctl to return ENOTTY which is correct for unknown ioctls Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
17b820606e
commit
a7be18d436
1 changed files with 2 additions and 4 deletions
|
@ -712,8 +712,7 @@ static int ac_ioctl(struct inode *inode, struct file *file, unsigned int cmd, un
|
||||||
|
|
||||||
IndexCard = adgl->num_card-1;
|
IndexCard = adgl->num_card-1;
|
||||||
|
|
||||||
if(cmd != 0 && cmd != 6 &&
|
if(cmd != 6 && ((IndexCard >= MAX_BOARD) || !apbs[IndexCard].RamIO)) {
|
||||||
((IndexCard >= MAX_BOARD) || !apbs[IndexCard].RamIO)) {
|
|
||||||
static int warncount = 10;
|
static int warncount = 10;
|
||||||
if (warncount) {
|
if (warncount) {
|
||||||
printk( KERN_WARNING "APPLICOM driver IOCTL, bad board number %d\n",(int)IndexCard+1);
|
printk( KERN_WARNING "APPLICOM driver IOCTL, bad board number %d\n",(int)IndexCard+1);
|
||||||
|
@ -832,8 +831,7 @@ static int ac_ioctl(struct inode *inode, struct file *file, unsigned int cmd, un
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printk(KERN_INFO "APPLICOM driver ioctl, unknown function code %d\n",cmd) ;
|
ret = -ENOTTY;
|
||||||
ret = -EINVAL;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Dummy = readb(apbs[IndexCard].RamIO + VERS);
|
Dummy = readb(apbs[IndexCard].RamIO + VERS);
|
||||||
|
|
Loading…
Add table
Reference in a new issue