vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Sep 11 
16:32:10 2015 +0200| [df5bb189902a78c9fff16e93d2ab094c3628fdf2] | committer: 
Francois Cartegnie

demux: ttml: probe without creating xmlreader

we need to peek only

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=df5bb189902a78c9fff16e93d2ab094c3628fdf2
---

 modules/demux/ttml.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/modules/demux/ttml.c b/modules/demux/ttml.c
index f6e849c..f48b326 100644
--- a/modules/demux/ttml.c
+++ b/modules/demux/ttml.c
@@ -32,6 +32,7 @@
 #include <vlc_strings.h>
 #include <vlc_memory.h>
 #include <vlc_es_out.h>
+#include <vlc_fixups.h>
 
 static int Open( vlc_object_t* p_this );
 static void Close( demux_t* p_demux );
@@ -451,12 +452,18 @@ static int Open( vlc_object_t* p_this )
 {
     demux_t     *p_demux = (demux_t*)p_this;
     demux_sys_t *p_sys;
+
+    uint8_t *p_peek;
+    ssize_t i_peek = stream_Peek( p_demux->s, (const uint8_t **) &p_peek, 128 
);
+    if( i_peek < 32 || memcmp( p_peek, "<?xml", 5 ) ||
+        !strnstr( (const char *) p_peek, "<tt ", i_peek ) )
+        return VLC_EGENERIC;
+
     p_demux->p_sys = p_sys = calloc( 1, sizeof( *p_sys ) );
     if ( unlikely( p_sys == NULL ) )
         return VLC_ENOMEM;
 
-    uint8_t *p_peek;
-    ssize_t i_peek = stream_Peek( p_demux->s, (const uint8_t **) &p_peek, 2048 
);
+    i_peek = stream_Peek( p_demux->s, (const uint8_t **) &p_peek, 2048 );
 
     if( unlikely( i_peek <= 0 ) )
     {

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to