summaryrefslogtreecommitdiff
path: root/libavfilter/af_afftdn.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2018-10-28 22:30:06 +0100
committerPaul B Mahol <onemda@gmail.com>2018-10-28 22:33:20 +0100
commite95987f6ca8e6872ca3a47f36ed8d304f88b2bfe (patch)
tree67db5e081040f70feacb7aeea86cdad31f122bb5 /libavfilter/af_afftdn.c
parent7070955d43ddaec87525cd83151838dadb28507c (diff)
avfilter/af_afftdn: fix memory leaks reported by coverity
Diffstat (limited to 'libavfilter/af_afftdn.c')
-rw-r--r--libavfilter/af_afftdn.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/libavfilter/af_afftdn.c b/libavfilter/af_afftdn.c
index 428375b694..ed2c1c1def 100644
--- a/libavfilter/af_afftdn.c
+++ b/libavfilter/af_afftdn.c
@@ -1163,15 +1163,13 @@ static int output_frame(AVFilterLink *inlink)
ThreadData td;
int ret = 0;
- if (!in) {
- in = ff_get_audio_buffer(outlink, s->window_length);
- if (!in)
- return AVERROR(ENOMEM);
- }
+ in = ff_get_audio_buffer(outlink, s->window_length);
+ if (!in)
+ return AVERROR(ENOMEM);
ret = av_audio_fifo_peek(s->fifo, (void **)in->extended_data, s->window_length);
if (ret < 0)
- return ret;
+ goto end;
if (s->track_noise) {
for (int ch = 0; ch < inlink->channels; ch++) {
@@ -1248,7 +1246,9 @@ static int output_frame(AVFilterLink *inlink)
dst[m] = orig[m] - src[m];
break;
default:
- return AVERROR_BUG;
+ av_frame_free(&out);
+ ret = AVERROR_BUG;
+ goto end;
}
memmove(src, src + s->sample_advance, (s->window_length - s->sample_advance) * sizeof(*src));
memset(src + (s->window_length - s->sample_advance), 0, s->sample_advance * sizeof(*src));