mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
Revert "mpegtspacketizer: memcmp potentially seen_before data"
This reverts commit fcad4cc646
.
This was wrong is so many ways.
* The memcmp was badly used (it should use == 0 to check the data is identical,
and not != 0)
* There was no boundary checks on the present stream section_data when passing
it to memcmp.
* The return value should have been TRUE (i.e. we have done all checks, none of
them failed, therefore the section has been seen before)
* stream->section_data would *always* be NULL if the section had already been
processed
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1559
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3427>
This commit is contained in:
parent
d0ed03fe3b
commit
080818140d
1 changed files with 3 additions and 14 deletions
|
@ -157,7 +157,7 @@ find_subtable (GSList * subtables, guint8 table_id, guint16 subtable_extension)
|
||||||
static gboolean
|
static gboolean
|
||||||
seen_section_before (MpegTSPacketizerStream * stream, guint8 table_id,
|
seen_section_before (MpegTSPacketizerStream * stream, guint8 table_id,
|
||||||
guint16 subtable_extension, guint8 version_number, guint8 section_number,
|
guint16 subtable_extension, guint8 version_number, guint8 section_number,
|
||||||
guint8 last_section_number, guint8 * data_start, gsize to_read)
|
guint8 last_section_number)
|
||||||
{
|
{
|
||||||
MpegTSPacketizerStreamSubtable *subtable;
|
MpegTSPacketizerStreamSubtable *subtable;
|
||||||
|
|
||||||
|
@ -178,17 +178,7 @@ seen_section_before (MpegTSPacketizerStream * stream, guint8 table_id,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
/* Finally return whether we saw that section or not */
|
/* Finally return whether we saw that section or not */
|
||||||
if (!MPEGTS_BIT_IS_SET (subtable->seen_section, section_number)) {
|
return MPEGTS_BIT_IS_SET (subtable->seen_section, section_number);
|
||||||
GST_DEBUG ("Different section_number");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stream->section_data) {
|
|
||||||
/* Everything else is the same, fall back to memcmp */
|
|
||||||
return (memcmp (stream->section_data, data_start, to_read) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static MpegTSPacketizerStreamSubtable *
|
static MpegTSPacketizerStreamSubtable *
|
||||||
|
@ -1203,8 +1193,7 @@ section_start:
|
||||||
* * same section_number was seen
|
* * same section_number was seen
|
||||||
*/
|
*/
|
||||||
if (seen_section_before (stream, table_id, subtable_extension,
|
if (seen_section_before (stream, table_id, subtable_extension,
|
||||||
version_number, section_number, last_section_number, data_start,
|
version_number, section_number, last_section_number)) {
|
||||||
to_read)) {
|
|
||||||
GST_DEBUG
|
GST_DEBUG
|
||||||
("PID 0x%04x Already processed table_id:0x%02x subtable_extension:0x%04x, version_number:%d, section_number:%d",
|
("PID 0x%04x Already processed table_id:0x%02x subtable_extension:0x%04x, version_number:%d, section_number:%d",
|
||||||
packet->pid, table_id, subtable_extension, version_number,
|
packet->pid, table_id, subtable_extension, version_number,
|
||||||
|
|
Loading…
Reference in a new issue