Re: [PATCH] edid-decode: Avoid division by zero

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/30/19 7:13 PM, Breno Leitao wrote:
> There are some weird monitors that returns invalid data, as zeroed
> Horizontal/Vertical Active/Blanking.
> 
> This causes edid-decode to crash with a divsion by error exception. This
> simple patch avoids so, checking for the divisor before proceeding.
> 
> Signed-off-by: Breno Leitao <leitao@xxxxxxxxxx>
> ---
>  edid-decode.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/edid-decode.c b/edid-decode.c
> index 7442f8a..4b2cef8 100644
> --- a/edid-decode.c
> +++ b/edid-decode.c
> @@ -1022,6 +1022,17 @@ static int detailed_block(const unsigned char *x,
> int in_extension)

This should have been on one line, it looks like your mailer is wrapping lines.

>  		break;
>  	}
> 
> +	if ((ha + hbl) == 0 ||
> +	    (va + vbl) == 0) {

I'd use '!ha || !hbl || !va || !vbl' here.



> +		printf("Invalid data. Refusing to continue.\n"

I'd say: "Invalid Detailing Timings:" here.

> +		       "Horizontal Active %4d\n"
> +		       "Horizontal Blanking %4d\n"
> +		       "Vertical Active %4d\n"
> +		       "Vertical Blanking %4d\n",
> +		       ha, hbl, va, vbl);
> +		return 0;
> +	}
> +
>  	pixclk_khz = (x[0] + (x[1] << 8)) * 10;
>  	refresh = (pixclk_khz * 1000) / ((ha + hbl) * (va + vbl));
>  	printf("Detailed mode: Clock %.3f MHz, %d mm x %d mm\n"
> 

I'm happy to take this if you post a v2 with these changes!

Regards,

	Hans



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux