[FFmpeg-cvslog] avcodec/pngdec: Fix memleak by postponing allocation
Andreas Rheinhardt
git at videolan.org
Fri Mar 19 01:53:26 EET 2021
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Wed Mar 10 20:16:32 2021 +0100| [5edcdfc318b62b8327565183e8f56b3f8dd2dd16] | committer: Andreas Rheinhardt
avcodec/pngdec: Fix memleak by postponing allocation
Fixes Coverity ticket #1322342.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5edcdfc318b62b8327565183e8f56b3f8dd2dd16
---
libavcodec/pngdec.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index a5a71ef161..63c22063d9 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -1080,10 +1080,6 @@ static int handle_p_frame_apng(AVCodecContext *avctx, PNGDecContext *s,
return AVERROR_PATCHWELCOME;
}
- buffer = av_malloc_array(s->image_linesize, s->height);
- if (!buffer)
- return AVERROR(ENOMEM);
-
ff_thread_await_progress(&s->last_picture, INT_MAX, 0);
// need to reset a rectangle to background:
@@ -1099,7 +1095,9 @@ static int handle_p_frame_apng(AVCodecContext *avctx, PNGDecContext *s,
}
}
- memcpy(buffer, s->last_picture.f->data[0], s->image_linesize * s->height);
+ buffer = av_memdup(s->last_picture.f->data[0], s->image_linesize * s->height);
+ if (!buffer)
+ return AVERROR(ENOMEM);
// Perform blending
if (s->blend_op == APNG_BLEND_OP_SOURCE) {
More information about the ffmpeg-cvslog
mailing list