vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Nov 24 16:23:01 2017 +0100| [38227a2d61f311f588a7a6489fcdee38388a2c39] | committer: Francois Cartegnie
demux: pes: change pts bitfield check allows incorrect 0010 (pts only) timestamp header for 11 signaling (pts+dts) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=38227a2d61f311f588a7a6489fcdee38388a2c39 --- modules/demux/mpeg/pes.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/demux/mpeg/pes.h b/modules/demux/mpeg/pes.h index 4a9befd0b7..b5bc18fdd6 100644 --- a/modules/demux/mpeg/pes.h +++ b/modules/demux/mpeg/pes.h @@ -22,10 +22,13 @@ static inline bool ExtractPESTimestamp( const uint8_t *p_data, uint8_t i_flags, mtime_t *ret ) { - i_flags = (i_flags << 4) | 0x01; /* check marker bits, and i_flags = b 0010, 0011 or 0001 */ - if((p_data[0] & 0xF1) != i_flags || + /* !warn broken muxers set incorrect flags. see #17773 and #19140 */ + /* check marker bits, and i_flags = b 0010, 0011 or 0001 */ + if((p_data[0] & 0xC1) != 0x01 || (p_data[2] & 0x01) != 0x01 || - (p_data[4] & 0x01) != 0x01) + (p_data[4] & 0x01) != 0x01 || + (p_data[0] & 0x30) == 0 || /* at least needs one bit */ + (p_data[0] >> 5) > i_flags ) /* needs flags 1x => 1x or flags 01 => 01 */ return false; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
