[PATCH] media: gspca: ov534-ov772x: Fix off-by-one error in set_frame_rate()

Jinjie Ruan posted 1 patch 3 weeks, 6 days ago
drivers/media/usb/gspca/ov534.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] media: gspca: ov534-ov772x: Fix off-by-one error in set_frame_rate()
Posted by Jinjie Ruan 3 weeks, 6 days ago
In set_frame_rate(), select a rate in rate_0 or rate_1 by checking
sd->frame_rate >= r->fps in a loop, but the loop condition terminates when
the index reaches zero, which fails to check the last elememt in rate_0 or
rate_1.

Check for >= 0 so that the last one in rate_0 or rate_1 is also checked.

Fixes: 189d92af707e ("V4L/DVB (13422): gspca - ov534: ov772x changes from Richard Kaswy.")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 drivers/media/usb/gspca/ov534.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/usb/gspca/ov534.c b/drivers/media/usb/gspca/ov534.c
index 8b6a57f170d0..bdff64a29a33 100644
--- a/drivers/media/usb/gspca/ov534.c
+++ b/drivers/media/usb/gspca/ov534.c
@@ -847,7 +847,7 @@ static void set_frame_rate(struct gspca_dev *gspca_dev)
 		r = rate_1;
 		i = ARRAY_SIZE(rate_1);
 	}
-	while (--i > 0) {
+	while (--i >= 0) {
 		if (sd->frame_rate >= r->fps)
 			break;
 		r++;
-- 
2.34.1
Re: [PATCH] media: gspca: ov534-ov772x: Fix off-by-one error in set_frame_rate()
Posted by Chen Ridong 3 weeks, 4 days ago

On 2024/10/28 16:02, Jinjie Ruan wrote:
> In set_frame_rate(), select a rate in rate_0 or rate_1 by checking
> sd->frame_rate >= r->fps in a loop, but the loop condition terminates when
> the index reaches zero, which fails to check the last elememt in rate_0 or
> rate_1.
> 
> Check for >= 0 so that the last one in rate_0 or rate_1 is also checked.
> 
> Fixes: 189d92af707e ("V4L/DVB (13422): gspca - ov534: ov772x changes from Richard Kaswy.")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
>  drivers/media/usb/gspca/ov534.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/media/usb/gspca/ov534.c b/drivers/media/usb/gspca/ov534.c
> index 8b6a57f170d0..bdff64a29a33 100644
> --- a/drivers/media/usb/gspca/ov534.c
> +++ b/drivers/media/usb/gspca/ov534.c
> @@ -847,7 +847,7 @@ static void set_frame_rate(struct gspca_dev *gspca_dev)
>  		r = rate_1;
>  		i = ARRAY_SIZE(rate_1);
>  	}
> -	while (--i > 0) {
> +	while (--i >= 0) {
>  		if (sd->frame_rate >= r->fps)
>  			break;
>  		r++;

It looks fine to me.

Thanks,
Ridong