summaryrefslogtreecommitdiff
path: root/libavfilter/asrc_sinc.c
diff options
context:
space:
mode:
authorJun Zhao <barryjzhao@tencent.com>2019-09-10 18:50:11 +0800
committerJun Zhao <barryjzhao@tencent.com>2019-09-11 10:36:34 +0800
commit944d76a3e056c26bfa2b6459ec1888f0676a37f2 (patch)
treef131ef893608edd014a1d5b5e5d5ffb8663d1144 /libavfilter/asrc_sinc.c
parent44b55a8c9c87cd54b404dbf0b1d716eeec5357e6 (diff)
lavfi/sinc: fix memory leak in error handling path
free work&pi_wraps in error handling path to avoid memory leak. Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Diffstat (limited to 'libavfilter/asrc_sinc.c')
-rw-r--r--libavfilter/asrc_sinc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavfilter/asrc_sinc.c b/libavfilter/asrc_sinc.c
index 0135eb9023..90f043d680 100644
--- a/libavfilter/asrc_sinc.c
+++ b/libavfilter/asrc_sinc.c
@@ -239,8 +239,11 @@ static int fir_to_phase(SincContext *s, float **h, int *len, int *post_len, floa
s->rdft = s->irdft = NULL;
s->rdft = av_rdft_init(av_log2(work_len), DFT_R2C);
s->irdft = av_rdft_init(av_log2(work_len), IDFT_C2R);
- if (!s->rdft || !s->irdft)
+ if (!s->rdft || !s->irdft) {
+ av_free(pi_wraps);
+ av_free(work);
return AVERROR(ENOMEM);
+ }
av_rdft_calc(s->rdft, work); /* Cepstral: */
UNPACK(work, work_len);