mov: fix leaking memory with multiple drefs.
authorDale Curtis <dalecurtis@chromium.org>
Fri, 13 Apr 2012 00:56:57 +0000 (17:56 -0700)
committerLuca Barbato <lu_zero@gentoo.org>
Sun, 15 Apr 2012 02:41:52 +0000 (19:41 -0700)
Instead of allocating over the original, free first. MOVStreamContext
is zero initialized so no double free will occur. Same style as other
fixes for the same problem in this file.

Signed-off-by: Dale Curtis <dalecurtis@chromium.org>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavformat/mov.c

index 046c030..5787f1a 100644 (file)
@@ -387,6 +387,7 @@ static int mov_read_dref(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     entries = avio_rb32(pb);
     if (entries >= UINT_MAX / sizeof(*sc->drefs))
         return AVERROR_INVALIDDATA;
+    av_free(sc->drefs);
     sc->drefs = av_mallocz(entries * sizeof(*sc->drefs));
     if (!sc->drefs)
         return AVERROR(ENOMEM);