diff mbox

gpsca: remove the risk of a division by zero

Message ID 20150209101625.GA28331@biggie (mailing list archive)
State New, archived
Headers show

Commit Message

Luis de Bethencourt Feb. 9, 2015, 10:16 a.m. UTC
As reported by Peter Kovar, there's a potential risk of a division by zero on
calls to jpeg_set_qual() when quality is zero.

As quality can't be 0 or lower than that, add an extra clause to cover this
special case.

Signed-off-by: Luis de Bethencourt <luis.bg@samsung.com>
---
 drivers/media/usb/gspca/topro.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Luis de Bethencourt Feb. 9, 2015, 10:18 a.m. UTC | #1
On Mon, Feb 09, 2015 at 10:16:25AM +0000, Luis de Bethencourt wrote:
> As reported by Peter Kovar, there's a potential risk of a division by zero on
> calls to jpeg_set_qual() when quality is zero.
> 
> As quality can't be 0 or lower than that, add an extra clause to cover this
> special case.
> 
> Signed-off-by: Luis de Bethencourt <luis.bg@samsung.com>
> ---
>  drivers/media/usb/gspca/topro.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/usb/gspca/topro.c b/drivers/media/usb/gspca/topro.c
> index 5fcd1ee..c70ff40 100644
> --- a/drivers/media/usb/gspca/topro.c
> +++ b/drivers/media/usb/gspca/topro.c
> @@ -969,7 +969,9 @@ static void jpeg_set_qual(u8 *jpeg_hdr,
>  {
>  	int i, sc;
>  
> -	if (quality < 50)
> +	if (quality <= 0)
> +		sc = 5000;
> +	else if (quality < 50)
>  		sc = 5000 / quality;
>  	else
>  		sc = 200 - quality * 2;
> -- 
> 2.1.3
> 

Reported here:
http://www.mail-archive.com/linux-media@vger.kernel.org/msg84989.html

Thanks :)
Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/media/usb/gspca/topro.c b/drivers/media/usb/gspca/topro.c
index 5fcd1ee..c70ff40 100644
--- a/drivers/media/usb/gspca/topro.c
+++ b/drivers/media/usb/gspca/topro.c
@@ -969,7 +969,9 @@  static void jpeg_set_qual(u8 *jpeg_hdr,
 {
 	int i, sc;
 
-	if (quality < 50)
+	if (quality <= 0)
+		sc = 5000;
+	else if (quality < 50)
 		sc = 5000 / quality;
 	else
 		sc = 200 - quality * 2;