[lvc-project] [PATCH] Input: adp5588-keys Add check on return code

Fedor Pchelkin pchelkin at ispras.ru
Mon Apr 21 11:51:13 MSK 2025


On Mon, 31. Mar 12:49, Denis Arefev wrote:
> @@ -519,14 +519,19 @@ static void adp5588_report_events(struct adp5588_kpad *kpad, int ev_cnt)
>  	int i;
>  
>  	for (i = 0; i < ev_cnt; i++) {
> -		int key = adp5588_read(kpad->client, KEY_EVENTA + i);
> -		int key_val = key & KEY_EV_MASK;
> -		int key_press = key & KEY_EV_PRESSED;
> +		int key, key_val, key_press;
> +
> +		key = adp5588_read(kpad->client, KEY_EVENTA + i);
> +		if (key < 0)
> +			continue;
> +
> +		key_val = key & KEY_EV_MASK;
> +		key_press = key & KEY_EV_PRESSED;
>  
>  		if (key_val >= GPI_PIN_BASE && key_val <= GPI_PIN_END) {
>  			/* gpio line used as IRQ source */
>  			adp5588_gpio_irq_handle(kpad, key_val, key_press);
> -		} else {
> +		} else if (key_val > 0) {
>  			int row = (key_val - 1) / ADP5588_COLS_MAX;
>  			int col =  (key_val - 1) % ADP5588_COLS_MAX;
>  			int code = MATRIX_SCAN_CODE(row, col, kpad->row_shift);

Исходя из того, как в этом блоке вычисляется индекс code, можно ли быть
уверенным, что он не превысит верхнюю границу массива?

Было бы правильным добавить в адресаты также "Nuno Sá" <noname.nuno at gmail.com>
- по крайней мере он единственный, кто проявлял заинтересованность..



More information about the lvc-project mailing list