char: lp: fix possible integer overflow in lp_setup()
The lp_setup() code doesn't apply any bounds checking when passing "lp=none", and only in this case, resulting in an overflow of the parport_nr[] array. All versions in Git history are affected. Reported-By: Roee Hay <roee.hay@hcl.com> Cc: Ben Hutchings <ben@decadent.org.uk> Cc: stable@vger.kernel.org Signed-off-by: Willy Tarreau <w@1wt.eu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2ea659a9ef
commit
3e21f4af17
|
@ -859,7 +859,11 @@ static int __init lp_setup (char *str)
|
||||||
} else if (!strcmp(str, "auto")) {
|
} else if (!strcmp(str, "auto")) {
|
||||||
parport_nr[0] = LP_PARPORT_AUTO;
|
parport_nr[0] = LP_PARPORT_AUTO;
|
||||||
} else if (!strcmp(str, "none")) {
|
} else if (!strcmp(str, "none")) {
|
||||||
parport_nr[parport_ptr++] = LP_PARPORT_NONE;
|
if (parport_ptr < LP_NO)
|
||||||
|
parport_nr[parport_ptr++] = LP_PARPORT_NONE;
|
||||||
|
else
|
||||||
|
printk(KERN_INFO "lp: too many ports, %s ignored.\n",
|
||||||
|
str);
|
||||||
} else if (!strcmp(str, "reset")) {
|
} else if (!strcmp(str, "reset")) {
|
||||||
reset = 1;
|
reset = 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue