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>
This commit is contained in:
parent
4fbf51ee6e
commit
312f73b648
drivers/media/usb/dvb-usb-v2
|
@ -402,8 +402,10 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap,
|
||||||
if (msg[0].addr == state->af9033_i2c_addr[1])
|
if (msg[0].addr == state->af9033_i2c_addr[1])
|
||||||
reg |= 0x100000;
|
reg |= 0x100000;
|
||||||
|
|
||||||
ret = af9035_wr_regs(d, reg, &msg[0].buf[3],
|
ret = (msg[0].len >= 3) ? af9035_wr_regs(d, reg,
|
||||||
msg[0].len - 3);
|
&msg[0].buf[3],
|
||||||
|
msg[0].len - 3)
|
||||||
|
: -EOPNOTSUPP;
|
||||||
} else {
|
} else {
|
||||||
/* I2C write */
|
/* I2C write */
|
||||||
u8 buf[MAX_XFER_SIZE];
|
u8 buf[MAX_XFER_SIZE];
|
||||||
|
|
Loading…
Reference in New Issue