]> git.itanic.dy.fi Git - linux-stable/commitdiff
media: vp7045: do not read uninitialized values if usb transfer fails
authorSean Young <sean@mess.org>
Sun, 10 Nov 2019 10:25:13 +0000 (11:25 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 5 Feb 2020 14:43:37 +0000 (14:43 +0000)
commit 26cff637121d8bb866ebd6515c430ac890e6ec80 upstream.

It is not a fatal error if reading the mac address or the remote control
decoder state fails.

Reported-by: syzbot+ec869945d3dde5f33b43@syzkaller.appspotmail.com
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/usb/dvb-usb/vp7045.c

index e2c8a853055443be76e3eb599abb2dd9be64663e..445d3e4c3de556b0f678fa2a5011a8426d93ef67 100644 (file)
@@ -99,10 +99,14 @@ static int vp7045_power_ctrl(struct dvb_usb_device *d, int onoff)
 
 static int vp7045_rc_query(struct dvb_usb_device *d)
 {
+       int ret;
        u8 key;
-       vp7045_usb_op(d,RC_VAL_READ,NULL,0,&key,1,20);
 
-       deb_rc("remote query key: %x %d\n",key,key);
+       ret = vp7045_usb_op(d, RC_VAL_READ, NULL, 0, &key, 1, 20);
+       if (ret)
+               return ret;
+
+       deb_rc("remote query key: %x\n", key);
 
        if (key != 0x44) {
                /*
@@ -118,15 +122,18 @@ static int vp7045_rc_query(struct dvb_usb_device *d)
 
 static int vp7045_read_eeprom(struct dvb_usb_device *d,u8 *buf, int len, int offset)
 {
-       int i = 0;
-       u8 v,br[2];
+       int i, ret;
+       u8 v, br[2];
        for (i=0; i < len; i++) {
                v = offset + i;
-               vp7045_usb_op(d,GET_EE_VALUE,&v,1,br,2,5);
+               ret = vp7045_usb_op(d, GET_EE_VALUE, &v, 1, br, 2, 5);
+               if (ret)
+                       return ret;
+
                buf[i] = br[1];
        }
-       deb_info("VP7045 EEPROM read (offs: %d, len: %d) : ",offset, i);
-       debug_dump(buf,i,deb_info);
+       deb_info("VP7045 EEPROM read (offs: %d, len: %d) : ", offset, i);
+       debug_dump(buf, i, deb_info);
        return 0;
 }