lavfi: check all ff_start_frame/draw_slice/end_frame calls for errors
[ffmpeg.git] / libavfilter / buffersrc.c
index 0828b15..2aa7d7d 100644 (file)
@@ -323,9 +323,10 @@ static int request_frame(AVFilterLink *link)
 
     switch (link->type) {
     case AVMEDIA_TYPE_VIDEO:
-        ff_start_frame(link, avfilter_ref_buffer(buf, ~0));
-        ff_draw_slice(link, 0, link->h, 1);
-        ff_end_frame(link);
+        if ((ret = ff_start_frame(link, avfilter_ref_buffer(buf, ~0))) < 0 ||
+            (ret = ff_draw_slice(link, 0, link->h, 1)) < 0 ||
+            (ret = ff_end_frame(link)) < 0)
+            goto fail;
         break;
     case AVMEDIA_TYPE_AUDIO:
         ret = ff_filter_samples(link, avfilter_ref_buffer(buf, ~0));
@@ -334,6 +335,7 @@ static int request_frame(AVFilterLink *link)
         return AVERROR(EINVAL);
     }
 
+fail:
     avfilter_unref_buffer(buf);
 
     return ret;