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

Reply via email to