[FFmpeg-cvslog] lavf/flvenc: fail in case the muxed packet is too big

Stefano Sabatini git at videolan.org
Mon Nov 3 09:59:51 CET 2014


ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Mon Nov  3 00:28:06 2014 +0100| [f0158e6f0cc1bd6bf5d0485a325bdc654fcd3328] | committer: Stefano Sabatini

lavf/flvenc: fail in case the muxed packet is too big

Avoid the creation of files which cannot be successfully decoded by
ffmpeg, for example generated with:
ffmpeg -f lavfi -i sine -af "aselect='not(between(t,100,500))',aresample=min_comp=0.001:min_hard_comp=0.100000" -acodec pcm_s16le -t 1000 -y out_audio.flv

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f0158e6f0cc1bd6bf5d0485a325bdc654fcd3328
---

 libavformat/flvenc.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
index 31a5c9e..939e663 100644
--- a/libavformat/flvenc.c
+++ b/libavformat/flvenc.c
@@ -548,6 +548,12 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt)
     if (sc->last_ts < ts)
         sc->last_ts = ts;
 
+    if (size + flags_size >= 1<<24) {
+        av_log(s, AV_LOG_ERROR, "Too large packet with size %u >= %u\n",
+               size + flags_size, 1<<24);
+        return AVERROR(EINVAL);
+    }
+
     avio_wb24(pb, size + flags_size);
     avio_wb24(pb, ts & 0xFFFFFF);
     avio_w8(pb, (ts >> 24) & 0x7F); // timestamps are 32 bits _signed_



More information about the ffmpeg-cvslog mailing list