lavu/ffmpeg_opt: Check return value of avcodec_find_encoder().
authorThilo Borgmann <thilo.borgmann@mail.de>
Thu, 25 Sep 2014 14:10:58 +0000 (16:10 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 25 Sep 2014 16:03:09 +0000 (18:03 +0200)
Prevents a segfault if a stream featuring a known but unavailable codec (like external lib codec) should be opened.

Bug found by: Jonas Geistert <j.geistert@yahoo.de>

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
ffmpeg_opt.c

index 05ab652..4fb6fa3 100644 (file)
@@ -1623,6 +1623,10 @@ static int read_ffserver_streams(OptionsContext *o, AVFormatContext *s, const ch
         AVCodecContext *avctx;
 
         codec = avcodec_find_encoder(ic->streams[i]->codec->codec_id);
+        if (!codec) {
+            av_log(s, AV_LOG_ERROR, "no encoder found for codec id %i\n", ic->streams[i]->codec->codec_id);
+            return AVERROR(EINVAL);
+        }
         ost   = new_output_stream(o, s, codec->type, -1);
         st    = ost->st;
         avctx = st->codec;