aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2015-11-25 21:59:33 +0100
committerPaul B Mahol <onemda@gmail.com>2015-11-25 21:59:33 +0100
commit142894d7202b5559d87f58df30baf48107a816f6 (patch)
treede11505745a5f9b48889060e618facba30154bab
parentfd3df296c157061ffec72e7314d4c9d7bb9c95bc (diff)
downloadffmpeg-142894d7202b5559d87f58df30baf48107a816f6.tar.gz
avfilter: do not leak frame if ff_get_audio_buffer() fails
Signed-off-by: Paul B Mahol <onemda@gmail.com>
-rw-r--r--libavfilter/af_adelay.c4
-rw-r--r--libavfilter/af_aecho.c4
-rw-r--r--libavfilter/af_biquads.c4
-rw-r--r--libavfilter/af_chorus.c4
4 files changed, 12 insertions, 4 deletions
diff --git a/libavfilter/af_adelay.c b/libavfilter/af_adelay.c
index 6bae4460c2..09bf3c7732 100644
--- a/libavfilter/af_adelay.c
+++ b/libavfilter/af_adelay.c
@@ -192,8 +192,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
return ff_filter_frame(ctx->outputs[0], frame);
out_frame = ff_get_audio_buffer(inlink, frame->nb_samples);
- if (!out_frame)
+ if (!out_frame) {
+ av_frame_free(&frame);
return AVERROR(ENOMEM);
+ }
av_frame_copy_props(out_frame, frame);
for (i = 0; i < s->nb_delays; i++) {
diff --git a/libavfilter/af_aecho.c b/libavfilter/af_aecho.c
index 7e7a9d5759..82049e9541 100644
--- a/libavfilter/af_aecho.c
+++ b/libavfilter/af_aecho.c
@@ -279,8 +279,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
out_frame = frame;
} else {
out_frame = ff_get_audio_buffer(inlink, frame->nb_samples);
- if (!out_frame)
+ if (!out_frame) {
+ av_frame_free(&frame);
return AVERROR(ENOMEM);
+ }
av_frame_copy_props(out_frame, frame);
}
diff --git a/libavfilter/af_biquads.c b/libavfilter/af_biquads.c
index b5b258f1b4..a6f9fbca0c 100644
--- a/libavfilter/af_biquads.c
+++ b/libavfilter/af_biquads.c
@@ -401,8 +401,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
out_buf = buf;
} else {
out_buf = ff_get_audio_buffer(inlink, nb_samples);
- if (!out_buf)
+ if (!out_buf) {
+ av_frame_free(&buf);
return AVERROR(ENOMEM);
+ }
av_frame_copy_props(out_buf, buf);
}
diff --git a/libavfilter/af_chorus.c b/libavfilter/af_chorus.c
index 2bdaca348d..c596164382 100644
--- a/libavfilter/af_chorus.c
+++ b/libavfilter/af_chorus.c
@@ -247,8 +247,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
out_frame = frame;
} else {
out_frame = ff_get_audio_buffer(inlink, frame->nb_samples);
- if (!out_frame)
+ if (!out_frame) {
+ av_frame_free(&frame);
return AVERROR(ENOMEM);
+ }
av_frame_copy_props(out_frame, frame);
}