From 3825b5268844694ff50a0e0bfde64df43a862fae Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 15 Jul 2012 09:47:01 +0200 Subject: lavfi: check all ff_start_frame/draw_slice/end_frame calls for errors --- libavfilter/buffersrc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'libavfilter/buffersrc.c') diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index 0828b153d8..2aa7d7d118 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -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; -- cgit v1.2.3