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 <[email protected]>
---
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
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 <[email protected]>
> ---
> 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/[email protected]/msg84989.html
Thanks :)
Luis