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