goodixmoc: Handle invalid finger number

A modified device may supply invalid data, leading to libfprint crashes

Reported by: Keith Linneman (LinnemanLabs)
This commit is contained in:
Marco Trevisan (Treviño)
2026-07-13 08:13:46 +00:00
committed by Marco Trevisan
parent d9374963cd
commit f15a62b5aa
@@ -416,6 +416,13 @@ gx_proto_parse_body (uint16_t cmd, FpiByteReader *byte_reader, pgxfp_cmd_respons
&presp->finger_list_resp.finger_num)) &presp->finger_list_resp.finger_num))
g_return_val_if_reached (-1); g_return_val_if_reached (-1);
if (presp->finger_list_resp.finger_num > FP_MAX_FINGERNUM)
{
g_warning ("Device reported too many fingers (%d)",
presp->finger_list_resp.finger_num);
return -1;
}
for(uint8_t num = 0; num < presp->finger_list_resp.finger_num; num++) for(uint8_t num = 0; num < presp->finger_list_resp.finger_num; num++)
{ {
uint16_t fingerid_length; uint16_t fingerid_length;