mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-22 14:06:23 +00:00
tsbase: Fix parsing of PSI table IDs
(Ported from mpegtsdemux d8fd874f52
)
This commit is contained in:
parent
f977d7e743
commit
336710d355
1 changed files with 13 additions and 1 deletions
|
@ -680,7 +680,7 @@ gboolean
|
|||
mpegts_base_is_psi (MpegTSBase * base, MpegTSPacketizerPacket * packet)
|
||||
{
|
||||
gboolean retval = FALSE;
|
||||
guint8 table_id;
|
||||
guint8 *data, table_id, pointer;
|
||||
int i;
|
||||
static const guint8 si_tables[] =
|
||||
{ 0x00, 0x01, 0x02, 0x03, 0x40, 0x41, 0x42, 0x46, 0x4A,
|
||||
|
@ -699,6 +699,18 @@ mpegts_base_is_psi (MpegTSBase * base, MpegTSPacketizerPacket * packet)
|
|||
|
||||
if (!retval) {
|
||||
if (packet->payload_unit_start_indicator) {
|
||||
data = packet->data;
|
||||
pointer = *data++;
|
||||
data += pointer;
|
||||
/* 'pointer' value may be invalid on malformed packet
|
||||
* so we need to avoid out of range
|
||||
*/
|
||||
if (!(data < packet->data_end)) {
|
||||
GST_WARNING_OBJECT (base,
|
||||
"Wrong offset when retrieving table id: 0x%x", pointer);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
table_id = *(packet->data);
|
||||
i = 0;
|
||||
while (si_tables[i] != TABLE_ID_UNSET) {
|
||||
|
|
Loading…
Reference in a new issue