mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 04:34:11 +08:00
[media] gspca_topro: Add a couple of missing length check in the packet parsing code
Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
ce4452e65d
commit
e15fd24495
@ -4631,8 +4631,16 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
|
||||
}
|
||||
data++;
|
||||
len--;
|
||||
if (len < 2) {
|
||||
gspca_dev->last_packet_type = DISCARD_PACKET;
|
||||
return;
|
||||
}
|
||||
if (*data == 0xff && data[1] == 0xd8) {
|
||||
/*fixme: there may be information in the 4 high bits*/
|
||||
if (len < 7) {
|
||||
gspca_dev->last_packet_type = DISCARD_PACKET;
|
||||
return;
|
||||
}
|
||||
if ((data[6] & 0x0f) != sd->quality)
|
||||
set_dqt(gspca_dev, data[6] & 0x0f);
|
||||
gspca_frame_add(gspca_dev, FIRST_PACKET,
|
||||
@ -4672,7 +4680,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
|
||||
gspca_dev->last_packet_type = DISCARD_PACKET;
|
||||
break;
|
||||
case 0xcc:
|
||||
if (data[1] != 0xff || data[2] != 0xd8)
|
||||
if (len >= 3 && (data[1] != 0xff || data[2] != 0xd8))
|
||||
gspca_frame_add(gspca_dev, INTER_PACKET,
|
||||
data + 1, len - 1);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user