check if video frame header is illegal

This commit is contained in:
sakumisu
2022-09-24 17:26:17 +08:00
parent dc1c1da072
commit 9ddfd6017c

View File

@@ -444,16 +444,19 @@ void usbh_videostreaming_parse_mjpeg(struct usbh_urb *urb, struct usbh_videostre
uint8_t errorBit : 1U;
uint8_t endOfHeader : 1U;
*/
if (iso_packet[i].actual_length < iso_packet[i].transfer_buffer[0]) {
return;
}
if (iso_packet[i].transfer_buffer[1] & (1 << 6)) {
if (iso_packet[i].actual_length == 0) { /* skip */
stream->bufoffset = 0;
continue;
}
if (iso_packet[i].actual_length == 0) { /* skip */
if (iso_packet[i].actual_length < iso_packet[i].transfer_buffer[0]) {
stream->bufoffset = 0;
continue;
}
if ((iso_packet[i].transfer_buffer[0] > 12) || (iso_packet[i].transfer_buffer[0] == 0)) {
stream->bufoffset = 0;
continue;
}
if (iso_packet[i].transfer_buffer[1] & (1 << 6)) {
stream->bufoffset = 0;
continue;
}
@@ -510,15 +513,19 @@ void usbh_videostreaming_parse_yuyv2rgb565(struct usbh_urb *urb, struct usbh_vid
uint8_t endOfHeader : 1U;
*/
if (iso_packet[i].actual_length < iso_packet[i].transfer_buffer[0]) {
return;
}
if (iso_packet[i].transfer_buffer[1] & (1 << 6)) {
if (iso_packet[i].actual_length == 0) { /* skip */
stream->bufoffset = 0;
continue;
}
if (iso_packet[i].actual_length == 0) { /* skip */
if (iso_packet[i].actual_length < iso_packet[i].transfer_buffer[0]) {
stream->bufoffset = 0;
continue;
}
if ((iso_packet[i].transfer_buffer[0] > 12) || (iso_packet[i].transfer_buffer[0] == 0)) {
stream->bufoffset = 0;
continue;
}
if (iso_packet[i].transfer_buffer[1] & (1 << 6)) {
stream->bufoffset = 0;
continue;
}