summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJozef Balga <jozef.balga@gmail.com>2018-08-21 12:01:04 +0300
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2018-08-29 20:54:37 +0300
commit312f73b648626a0526a3aceebb0a3192aaba05ce (patch)
tree6b295d08d00ac14979d382868e6d25c8820eed55
parent4fbf51ee6e822ac28be28ff25883745131e8c4a3 (diff)
downloadlinux-312f73b648626a0526a3aceebb0a3192aaba05ce.tar.xz
media: af9035: prevent buffer overflow on write
When less than 3 bytes are written to the device, memcpy is called with negative array size which leads to buffer overflow and kernel panic. This patch adds a condition and returns -EOPNOTSUPP instead. Fixes bugzilla issue 64871 [mchehab+samsung@kernel.org: fix a merge conflict and changed the condition to match the patch's comment, e. g. len == 3 could also be valid] Signed-off-by: Jozef Balga <jozef.balga@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
-rw-r--r--drivers/media/usb/dvb-usb-v2/af9035.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/media/usb/dvb-usb-v2/af9035.c b/drivers/media/usb/dvb-usb-v2/af9035.c
index 666d319d3d1a..1f6c1eefe389 100644
--- a/drivers/media/usb/dvb-usb-v2/af9035.c
+++ b/drivers/media/usb/dvb-usb-v2/af9035.c
@@ -402,8 +402,10 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap,
if (msg[0].addr == state->af9033_i2c_addr[1])
reg |= 0x100000;
- ret = af9035_wr_regs(d, reg, &msg[0].buf[3],
- msg[0].len - 3);
+ ret = (msg[0].len >= 3) ? af9035_wr_regs(d, reg,
+ &msg[0].buf[3],
+ msg[0].len - 3)
+ : -EOPNOTSUPP;
} else {
/* I2C write */
u8 buf[MAX_XFER_SIZE];