[libav-commits] caf: fix 'pakt' chunk parsing

Justin Ruggles git at libav.org
Thu Jul 19 20:25:09 CEST 2012


Module: libav
Branch: master
Commit: f5a9c35f886508b851011b7dd4ec18cc67b57d37

Author:    Justin Ruggles <justin.ruggles at gmail.com>
Committer: Justin Ruggles <justin.ruggles at gmail.com>
Date:      Mon Jul  9 14:10:52 2012 -0400

caf: fix 'pakt' chunk parsing

according to the CAF specification:
"... the value for mChunkSize can be greater than the actual valid content
of the packet table chunk"

---

 libavformat/cafdec.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c
index 4a04cb0..90e97a1 100644
--- a/libavformat/cafdec.c
+++ b/libavformat/cafdec.c
@@ -192,10 +192,11 @@ static int read_pakt_chunk(AVFormatContext *s, int64_t size)
         st->duration += caf->frames_per_packet ? caf->frames_per_packet : ff_mp4_read_descr_len(pb);
     }
 
-    if (avio_tell(pb) - ccount != size) {
+    if (avio_tell(pb) - ccount > size) {
         av_log(s, AV_LOG_ERROR, "error reading packet table\n");
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
+    avio_skip(pb, ccount + size - avio_tell(pb));
 
     caf->num_bytes = pos;
     return 0;



More information about the libav-commits mailing list