diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-06-15 03:33:13 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-06-15 04:22:28 +0200 |
commit | 3aa0be003e98006215f670e712851a443d3f3c5f (patch) | |
tree | 499cb590a6caa12851c73196cb0c2d933399484e | |
parent | ea1b71e82f5a1752d59d3bfb9704092a79eba6b5 (diff) | |
download | ffmpeg-3aa0be003e98006215f670e712851a443d3f3c5f.tar.gz |
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>
-rw-r--r-- | libavcodec/iirfilter.c | 6 |
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; } |