summaryrefslogtreecommitdiff
path: root/libavformat/mov.c
diff options
context:
space:
mode:
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>2009-06-03 23:13:53 +0000
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2009-06-03 23:13:53 +0000
commit281551131d65603ae31df280b4ff1e7e7930a8f9 (patch)
treef0106becf4b503289f1b4132a59135b0420f3851 /libavformat/mov.c
parent502d6c0a234b10f65acb0a203aedf14de70dc555 (diff)
broken stsd length might be < 16, fix elst-assert.mp4
Originally committed as revision 19084 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/mov.c')
-rw-r--r--libavformat/mov.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 1c51e8bec6..415acd159c 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -763,15 +763,17 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOVAtom atom)
for(pseudo_stream_id=0; pseudo_stream_id<entries; pseudo_stream_id++) {
//Parsing Sample description table
enum CodecID id;
- int dref_id;
+ int dref_id = 1;
MOVAtom a = { 0, 0, 0 };
int64_t start_pos = url_ftell(pb);
int size = get_be32(pb); /* size */
uint32_t format = get_le32(pb); /* data format */
- get_be32(pb); /* reserved */
- get_be16(pb); /* reserved */
- dref_id = get_be16(pb);
+ if (size >= 16) {
+ get_be32(pb); /* reserved */
+ get_be16(pb); /* reserved */
+ dref_id = get_be16(pb);
+ }
if (st->codec->codec_tag &&
st->codec->codec_tag != format &&