hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/media/usb/dvb-usb-v2/af9035.c
....@@ -269,6 +269,7 @@
269269 struct dvb_usb_device *d = i2c_get_adapdata(adap);
270270 struct state *state = d_to_priv(d);
271271 int ret;
272
+ u32 reg;
272273
273274 if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
274275 return -EAGAIN;
....@@ -321,8 +322,10 @@
321322 ret = -EOPNOTSUPP;
322323 } else if ((msg[0].addr == state->af9033_i2c_addr[0]) ||
323324 (msg[0].addr == state->af9033_i2c_addr[1])) {
325
+ if (msg[0].len < 3 || msg[1].len < 1)
326
+ return -EOPNOTSUPP;
324327 /* demod access via firmware interface */
325
- u32 reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
328
+ reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
326329 msg[0].buf[2];
327330
328331 if (msg[0].addr == state->af9033_i2c_addr[1])
....@@ -380,17 +383,16 @@
380383 ret = -EOPNOTSUPP;
381384 } else if ((msg[0].addr == state->af9033_i2c_addr[0]) ||
382385 (msg[0].addr == state->af9033_i2c_addr[1])) {
386
+ if (msg[0].len < 3)
387
+ return -EOPNOTSUPP;
383388 /* demod access via firmware interface */
384
- u32 reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
389
+ reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
385390 msg[0].buf[2];
386391
387392 if (msg[0].addr == state->af9033_i2c_addr[1])
388393 reg |= 0x100000;
389394
390
- ret = (msg[0].len >= 3) ? af9035_wr_regs(d, reg,
391
- &msg[0].buf[3],
392
- msg[0].len - 3)
393
- : -EOPNOTSUPP;
395
+ ret = af9035_wr_regs(d, reg, &msg[0].buf[3], msg[0].len - 3);
394396 } else {
395397 /* I2C write */
396398 u8 buf[MAX_XFER_SIZE];