vlc | branch: master | Filip Roséen <[email protected]> | Thu Nov 17 05:21:09 2016 
+0100| [c19f472ff08ec446dba680e47dd66b2880215d81] | committer: Francois 
Cartegnie

demux/mp4: adjust to changes introduced by 8f9b76e

ExtractIntlStrings is only applicable for a limited range of boxes,
though with the recent changes following its introduction it might be
invoked for entities it is currently not protected from misdiagnosing.

These changes make sure that we only interpret a box inside the
function if:

 - the atom is known as a metadata box
 - the box has been parsed
 - the box has a father, and it is ATOM_udta

The check so that we do not parse boxes that contain a "data"-box has
been removed given that this check is more suitable at where the call
to the function is made.

Signed-off-by: Francois Cartegnie <[email protected]>

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

 modules/demux/mp4/meta.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/modules/demux/mp4/meta.c b/modules/demux/mp4/meta.c
index b3553d7..f29200e 100644
--- a/modules/demux/mp4/meta.c
+++ b/modules/demux/mp4/meta.c
@@ -241,10 +241,7 @@ static bool SetMeta( vlc_meta_t* p_meta, int i_type, char 
const* name, MP4_Box_t
 
 static int ExtractIntlStrings( vlc_meta_t *p_meta, MP4_Box_t *p_box )
 {
-    if( *(uint8_t*)&p_box->i_type != 0xa9 || MP4_BoxGet( p_box, "data" ) )
-        return false;
-
-    if( p_box->data.p_binary->p_blob == NULL )
+    if( MP4_BoxGet( p_box, "data" ) )
         return false;
 
     vlc_meta_type_t const* meta_type;
@@ -253,6 +250,14 @@ static int ExtractIntlStrings( vlc_meta_t *p_meta, 
MP4_Box_t *p_box )
     if( AtomXA9ToMeta( p_box->i_type, &meta_type, &meta_key ) == false )
         return false;
 
+    if( p_box->p_father == NULL              ||
+        p_box->p_father->i_type != ATOM_udta ||
+        p_box->data.p_binary == NULL         ||
+        p_box->data.p_binary->p_blob == NULL )
+    {
+        return false;
+    }
+
     vlc_meta_t* p_meta_intl = vlc_meta_New();
 
     if( unlikely( !p_meta_intl ) )

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

Reply via email to