summaryrefslogtreecommitdiff
path: root/libavcodec/iirfilter.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-06-15 03:33:13 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-06-15 04:22:28 +0200
commit3aa0be003e98006215f670e712851a443d3f3c5f (patch)
tree499cb590a6caa12851c73196cb0c2d933399484e /libavcodec/iirfilter.c
parentea1b71e82f5a1752d59d3bfb9704092a79eba6b5 (diff)
avcodec/iirfilter: Fix memleak
Commit 17e88bf0df21906633a7d36d9f2aeeeb5b6d3267 created a memleak by removing a call to ff_iir_filter_free_coeffsp on error; this has been found by Coverity (ID 1464159). This commit fixes the memleak by readding the call to ff_iir_filter_free_coeffsp. Notice that this is not a simple revert, because several macros that were used before 17e88bf0df21906633a7d36d9f2aeeeb5b6d3267 were replaced in commit 44863b2c2d5a31d82aafa71cdbd180d6bfbed5b4 and completely removed in 2658680df4fc606522e5f65899afb9a98b47d287. Reviewed-by: Limin Wang <lance.lmwang@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavcodec/iirfilter.c')
-rw-r--r--libavcodec/iirfilter.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libavcodec/iirfilter.c b/libavcodec/iirfilter.c
index 9f76bce8b8..cd5bbc943a 100644
--- a/libavcodec/iirfilter.c
+++ b/libavcodec/iirfilter.c
@@ -174,7 +174,7 @@ av_cold struct FFIIRFilterCoeffs *ff_iir_filter_init_coeffs(void *avc,
if (!(c = av_mallocz(sizeof(*c))) ||
!(c->cx = av_malloc (sizeof(c->cx[0]) * ((order >> 1) + 1))) ||
!(c->cy = av_malloc (sizeof(c->cy[0]) * order)))
- return NULL;
+ goto free;
c->order = order;
switch (filt_type) {
@@ -188,11 +188,13 @@ av_cold struct FFIIRFilterCoeffs *ff_iir_filter_init_coeffs(void *avc,
break;
default:
av_log(avc, AV_LOG_ERROR, "filter type is not currently implemented\n");
- return NULL;
+ goto free;
}
if (!ret)
return c;
+free:
+ ff_iir_filter_free_coeffsp(&c);
return NULL;
}