diff mbox series

[FFmpeg-devel] avcodec/vp6: return value check for av_mallocz

Message ID 20220207034453.734942-1-jiasheng@iscas.ac.cn
State Accepted
Commit c4d63dbc9417ddf77f6e33f6144b23da7e97cb3b
Headers show
Series [FFmpeg-devel] avcodec/vp6: return value check for av_mallocz | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished
andriy/make_aarch64_jetson success Make finished
andriy/make_fate_aarch64_jetson success Make fate finished

Commit Message

Jiasheng Jiang Feb. 7, 2022, 3:44 a.m. UTC
As the potential failure of the av_mallocz(), the 's->alpha_context'
could be NULL and be dereferenced later.
Therefore, it should be better to check it and deal with it if fails
in order to prevent memory leak, same as the av_frame_alloc() in
ff_vp56_init().

Fixes: 39a3894ad5 ("lavc/vp6: Implement "slice" threading for VP6A decode")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
---
 libavcodec/vp6.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Peter Ross Feb. 9, 2022, 5:24 a.m. UTC | #1
On Mon, Feb 07, 2022 at 11:44:53AM +0800, Jiasheng Jiang wrote:
> As the potential failure of the av_mallocz(), the 's->alpha_context'
> could be NULL and be dereferenced later.
> Therefore, it should be better to check it and deal with it if fails
> in order to prevent memory leak, same as the av_frame_alloc() in
> ff_vp56_init().
> 
> Fixes: 39a3894ad5 ("lavc/vp6: Implement "slice" threading for VP6A decode")
> Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
> ---
>  libavcodec/vp6.c | 4 ++++
>  1 file changed, 4 insertions(+)

looks good to me.
i will apply in couple of days.

-- Peter
(A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B)
diff mbox series

Patch

diff --git a/libavcodec/vp6.c b/libavcodec/vp6.c
index d024370793..d75e717082 100644
--- a/libavcodec/vp6.c
+++ b/libavcodec/vp6.c
@@ -653,6 +653,10 @@  static av_cold int vp6_decode_init(AVCodecContext *avctx)
 
     if (s->has_alpha) {
         s->alpha_context = av_mallocz(sizeof(VP56Context));
+        if (!s->alpha_context) {
+            ff_vp56_free(avctx);
+            return AVERROR(ENOMEM);
+        }
         ff_vp56_init_context(avctx, s->alpha_context,
                              s->flip == -1, s->has_alpha);
         ff_vp6dsp_init(&s->alpha_context->vp56dsp);