Author: ayoung
Date: Mon Mar 29 06:02:14 2010
New Revision: 8670

URL: http://svn.slimdevices.com/jive?rev=8670&view=rev
Log:
Fixed bug 15967: MP4 parser errors: large boxes (64-bit size field) and flags 

Modified:
    7.6/trunk/squeezeplay/src/squeezeplay/src/audio/mp4.c

Modified: 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/mp4.c
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay/src/audio/mp4.c?rev=8670&r1=8669&r2=8670&view=diff
==============================================================================
--- 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/mp4.c (original)
+++ 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/mp4.c Mon Mar 29 06:02:14 
2010
@@ -129,8 +129,8 @@
        }
        if (flags) {
                *flags  = mp4->ptr[1] << 16;
-               *flags |= mp4->ptr[1] << 8;
-               *flags |= mp4->ptr[1];
+               *flags |= mp4->ptr[2] << 8;
+               *flags |= mp4->ptr[3];
        }
        mp4->ptr += 4;
        mp4->off += 4;
@@ -216,21 +216,22 @@
                        
        mp4->box_size = mp4_get_u32(mp4);
 
+       memcpy(mp4->box_type, mp4->ptr, 4);
+       mp4_skip(mp4, 4);
+
+       mp4->box_size -= 8;
+
        if (mp4->box_size == 1) {
                /* extended box size */
                mp4->box_size = mp4_get_u64(mp4);
+               mp4->box_size -= 8;
        }
        else if (mp4->box_size == 0) {
                /* box extends to end of file */
                mp4->box_size = ULONG_MAX;
        }
 
-       memcpy(mp4->box_type, mp4->ptr, 4);
-       mp4_skip(mp4, 4);
-
-       LOG_DEBUG(log_audio_codec, "box %.4s %d (%x)", mp4->box_type, 
mp4->box_size, mp4->box_size);
-
-       mp4->box_size -= 8;
+       LOG_DEBUG(log_audio_codec, "box %.4s, size without header %d (%x)", 
mp4->box_type, mp4->box_size, mp4->box_size);
 
        /* find box parser */
        i=0;

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to