media: sr030pc30: prevent array underflow in try_fmt()
authorDan Carpenter <dan.carpenter@oracle.com>
Thu, 25 Jan 2018 14:15:25 +0000 (09:15 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 6 Mar 2018 13:20:22 +0000 (08:20 -0500)
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/i2c/sr030pc30.c

index 0bf031b7e4fa932d462f45421f805b4a0578d69c..2a4882cddc51950a4dabf8aa2a99784904d9d1cf 100644 (file)
@@ -511,13 +511,16 @@ static int sr030pc30_get_fmt(struct v4l2_subdev *sd,
 static const struct sr030pc30_format *try_fmt(struct v4l2_subdev *sd,
                                              struct v4l2_mbus_framefmt *mf)
 {
-       int i = ARRAY_SIZE(sr030pc30_formats);
+       int i;
 
        sr030pc30_try_frame_size(mf);
 
-       while (i--)
+       for (i = 0; i < ARRAY_SIZE(sr030pc30_formats); i++) {
                if (mf->code == sr030pc30_formats[i].code)
                        break;
+       }
+       if (i == ARRAY_SIZE(sr030pc30_formats))
+               i = 0;
 
        mf->code = sr030pc30_formats[i].code;