projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
aec3ead
)
media: mceusb: filter out bogus timing irdata of duration 0
author
Sean Young
<
[email protected]
>
Thu, 10 May 2018 11:37:51 +0000
(07:37 -0400)
committer
Mauro Carvalho Chehab
<
[email protected]
>
Mon, 14 May 2018 11:12:11 +0000
(07:12 -0400)
A mceusb device has been observed producing invalid irdata. Proactively
guard against this.
Suggested-by: Matthias Reichl <
[email protected]
>
Signed-off-by: Sean Young <
[email protected]
>
Signed-off-by: Mauro Carvalho Chehab <
[email protected]
>
drivers/media/rc/mceusb.c
patch
|
blob
|
history
diff --git
a/drivers/media/rc/mceusb.c
b/drivers/media/rc/mceusb.c
index 1619b748469b8c1e967a5f33c89b61433a3e1ab0..1ca49491abc84d2208433039a10e8c8fa68d77de 100644
(file)
--- a/
drivers/media/rc/mceusb.c
+++ b/
drivers/media/rc/mceusb.c
@@
-1177,6
+1177,11
@@
static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
init_ir_raw_event(&rawir);
rawir.pulse = ((ir->buf_in[i] & MCE_PULSE_BIT) != 0);
rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK);
+ if (unlikely(!rawir.duration)) {
+ dev_warn(ir->dev, "nonsensical irdata %02x with duration 0",
+ ir->buf_in[i]);
+ break;
+ }
if (rawir.pulse) {
ir->pulse_tunit += rawir.duration;
ir->pulse_count++;