libavformat/flvdec.c: free always the packet after a resync.
authorThierry Foucu <tfoucu@gmail.com>
Mon, 28 Sep 2015 21:34:45 +0000 (14:34 -0700)
committerMichael Niedermayer <michael@niedermayer.cc>
Tue, 29 Sep 2015 02:01:50 +0000 (04:01 +0200)
In case of resync, always free the packet, but retry only if the resync
did not get to the end of the file. Otherwise, there is a memory leak when the
last packet in the file is corrupted.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavformat/flvdec.c

index 16d25e9..a59c07d 100644 (file)
@@ -1142,8 +1142,8 @@ leave:
         av_log(s, AV_LOG_ERROR, "Packet mismatch %d %d\n", last, orig_size + 11);
         avio_seek(s->pb, pos + 1, SEEK_SET);
         ret = resync(s);
         av_log(s, AV_LOG_ERROR, "Packet mismatch %d %d\n", last, orig_size + 11);
         avio_seek(s->pb, pos + 1, SEEK_SET);
         ret = resync(s);
+        av_free_packet(pkt);
         if (ret >= 0) {
         if (ret >= 0) {
-            av_free_packet(pkt);
             goto retry;
         }
     }
             goto retry;
         }
     }