Skip to content

Commit bc561dc

Browse files
neosys007dtor
authored andcommitted
Input: gf2k - skip invalid hat lookup values
gf2k_read() decodes the hat position from a 4-bit field and uses it directly to index gf2k_hat_to_axis[]. The lookup table only has nine entries, so malformed packets can read past the end of the fixed table. Skip hat reporting when the decoded value falls outside the lookup table instead of forcing it to the neutral position. This keeps the fix local and avoids reporting a made-up axis state for malformed packets. Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn> Link: https://patch.msgid.link/20260407120001.1-gf2k-v2-pengpeng@iscas.ac.cn Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
1 parent 84e7a17 commit bc561dc

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

drivers/input/joystick/gf2k.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,10 @@ static void gf2k_read(struct gf2k *gf2k, unsigned char *data)
165165

166166
t = GB(40,4,0);
167167

168-
for (i = 0; i < gf2k_hats[gf2k->id]; i++)
169-
input_report_abs(dev, ABS_HAT0X + i, gf2k_hat_to_axis[t][i]);
168+
if (t < ARRAY_SIZE(gf2k_hat_to_axis))
169+
for (i = 0; i < gf2k_hats[gf2k->id]; i++)
170+
input_report_abs(dev, ABS_HAT0X + i,
171+
gf2k_hat_to_axis[t][i]);
170172

171173
t = GB(44,2,0) | GB(32,8,2) | GB(78,2,10);
172174

0 commit comments

Comments
 (0)