ACK: [CVE-2017-100363][PATCHv2 T/Y/Z] char: lp: fix possible integer overflow in lp_setup()

Colin Ian King colin.king at canonical.com
Wed Jun 7 09:32:06 UTC 2017


On 07/06/17 10:05, Po-Hsu Lin wrote:
> From: Willy Tarreau <w at 1wt.eu>
> 
> CVE-2017-100363
> 
> 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 at hcl.com>
> Cc: Ben Hutchings <ben at decadent.org.uk>
> Cc: stable at vger.kernel.org
> Signed-off-by: Willy Tarreau <w at 1wt.eu>
> Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> (cherry picked from commit 3e21f4af170bebf47c187c1ff8bf155583c9f3b1)
> 
> Signed-off-by: Po-Hsu Lin <po-hsu.lin at canonical.com>
> ---
>  drivers/char/lp.c |    6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/char/lp.c b/drivers/char/lp.c
> index 0913d79..6b61910 100644
> --- a/drivers/char/lp.c
> +++ b/drivers/char/lp.c
> @@ -857,7 +857,11 @@ static int __init lp_setup (char *str)
>  	} else if (!strcmp(str, "auto")) {
>  		parport_nr[0] = LP_PARPORT_AUTO;
>  	} 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")) {
>  		reset = 1;
>  	}
> 

Looks good to me.

Acked-by: Colin Ian King <colin.king at canonical.com>




More information about the kernel-team mailing list