[FFmpeg-cvslog] avcodec/iirfilter: Fix memleak

Andreas Rheinhardt git at videolan.org
Mon Jun 15 05:26:03 EEST 2020


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Mon Jun 15 03:33:13 2020 +0200| [3aa0be003e98006215f670e712851a443d3f3c5f] | committer: Andreas Rheinhardt

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 at gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3aa0be003e98006215f670e712851a443d3f3c5f
---

 libavcodec/iirfilter.c | 6 ++++--
 1 file 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;
 }
 



More information about the ffmpeg-cvslog mailing list