[media-next] media: i2c: mt9v111: fix off-by-one array bounds check
diff mbox series

Message ID 20180731133343.22337-1-colin.king@canonical.com
State New
Headers show
Series
  • [media-next] media: i2c: mt9v111: fix off-by-one array bounds check
Related show

Commit Message

Colin King July 31, 2018, 1:33 p.m. UTC
From: Colin Ian King <colin.king@canonical.com>

The check of fse->index is off-by-one and should be using >= rather
than > to check the maximum allowed array index. Fix this.

Detected by CoverityScan, CID#172122 ("Out-of-bounds read")

Fixes: aab7ed1c3927 ("media: i2c: Add driver for Aptina MT9V111")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 drivers/media/i2c/mt9v111.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jacopo Mondi July 31, 2018, 1:53 p.m. UTC | #1
Hi Colin,
   thanks for the patch.

On Tue, Jul 31, 2018 at 02:33:43PM +0100, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> The check of fse->index is off-by-one and should be using >= rather
> than > to check the maximum allowed array index. Fix this.
>
> Detected by CoverityScan, CID#172122 ("Out-of-bounds read")
>
> Fixes: aab7ed1c3927 ("media: i2c: Add driver for Aptina MT9V111")
> Signed-off-by: Colin Ian King <colin.king@canonical.com>

Acked-by: Jacopo Mondi <jacopo+renesas@jmondi.org>

Thanks
  j

> ---
>  drivers/media/i2c/mt9v111.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/i2c/mt9v111.c b/drivers/media/i2c/mt9v111.c
> index da8f6ab91307..b1d13f1d695e 100644
> --- a/drivers/media/i2c/mt9v111.c
> +++ b/drivers/media/i2c/mt9v111.c
> @@ -848,7 +848,7 @@ static int mt9v111_enum_frame_size(struct v4l2_subdev *subdev,
>  				   struct v4l2_subdev_pad_config *cfg,
>  				   struct v4l2_subdev_frame_size_enum *fse)
>  {
> -	if (fse->pad || fse->index > ARRAY_SIZE(mt9v111_frame_sizes))
> +	if (fse->pad || fse->index >= ARRAY_SIZE(mt9v111_frame_sizes))
>  		return -EINVAL;
>
>  	fse->min_width = mt9v111_frame_sizes[fse->index].width;
> --
> 2.17.1
>
Colin King July 31, 2018, 1:55 p.m. UTC | #2
On 31/07/18 14:53, jacopo mondi wrote:
> Hi Colin,
>    thanks for the patch.
> 
> On Tue, Jul 31, 2018 at 02:33:43PM +0100, Colin King wrote:
>> From: Colin Ian King <colin.king@canonical.com>
>>
>> The check of fse->index is off-by-one and should be using >= rather
>> than > to check the maximum allowed array index. Fix this.
>>
>> Detected by CoverityScan, CID#172122 ("Out-of-bounds read")
>>
>> Fixes: aab7ed1c3927 ("media: i2c: Add driver for Aptina MT9V111")
>> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> 
> Acked-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
> 
> Thanks
>   j
> 

Just to note, I also got a build warning on this driver, so that's
something that should be fixed up too.

drivers/media/i2c/mt9v111.c:887:15: warning: 'idx' may be used
uninitialized in this function [-Wmaybe-uninitialized]
  unsigned int idx;
Jacopo Mondi July 31, 2018, 2:01 p.m. UTC | #3
Hi Colin,

On Tue, Jul 31, 2018 at 02:55:25PM +0100, Colin Ian King wrote:
> On 31/07/18 14:53, jacopo mondi wrote:
> > Hi Colin,
> >    thanks for the patch.
> >
> > On Tue, Jul 31, 2018 at 02:33:43PM +0100, Colin King wrote:
> >> From: Colin Ian King <colin.king@canonical.com>
> >>
> >> The check of fse->index is off-by-one and should be using >= rather
> >> than > to check the maximum allowed array index. Fix this.
> >>
> >> Detected by CoverityScan, CID#172122 ("Out-of-bounds read")
> >>
> >> Fixes: aab7ed1c3927 ("media: i2c: Add driver for Aptina MT9V111")
> >> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> >
> > Acked-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
> >
> > Thanks
> >   j
> >
>
> Just to note, I also got a build warning on this driver, so that's
> something that should be fixed up too.
>
> drivers/media/i2c/mt9v111.c:887:15: warning: 'idx' may be used
> uninitialized in this function [-Wmaybe-uninitialized]
>   unsigned int idx;

Yes, that's false positive but indeed gcc doesn't know about that.

A patch has already been sent and will hopefully be collected soon:
https://patchwork.linuxtv.org/patch/51259/

Thanks for noticing
   j

Patch
diff mbox series

diff --git a/drivers/media/i2c/mt9v111.c b/drivers/media/i2c/mt9v111.c
index da8f6ab91307..b1d13f1d695e 100644
--- a/drivers/media/i2c/mt9v111.c
+++ b/drivers/media/i2c/mt9v111.c
@@ -848,7 +848,7 @@  static int mt9v111_enum_frame_size(struct v4l2_subdev *subdev,
 				   struct v4l2_subdev_pad_config *cfg,
 				   struct v4l2_subdev_frame_size_enum *fse)
 {
-	if (fse->pad || fse->index > ARRAY_SIZE(mt9v111_frame_sizes))
+	if (fse->pad || fse->index >= ARRAY_SIZE(mt9v111_frame_sizes))
 		return -EINVAL;
 
 	fse->min_width = mt9v111_frame_sizes[fse->index].width;