From 2f8dcdd41ab3d4100bb0fe5d13e35d6934376080 Mon Sep 17 00:00:00 2001 From: Isha Kulkarni Date: Fri, 10 May 2019 12:16:01 +0530 Subject: [PATCH] Decoder: Avoid overlapping memcpy while initializing ref lists Bug: 117608404 Test: poc with valgrind before/after Change-Id: I73f2c5302376af11a8f922ceb2e0b1c9cf883f8b --- decoder/ih264d_process_bslice.c | 40 ++++++++++++++++----------------- decoder/ih264d_process_pslice.c | 20 ++++++++--------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/decoder/ih264d_process_bslice.c b/decoder/ih264d_process_bslice.c index 3ff15df..6aefcbb 100644 --- a/decoder/ih264d_process_bslice.c +++ b/decoder/ih264d_process_bslice.c @@ -1360,17 +1360,17 @@ void ih264d_init_ref_idx_lx_b(dec_struct_t *ps_dec) /* reference list to handle of errors */ { UWORD8 u1_i; - pic_buffer_t *ps_ref_pic; + pic_buffer_t ref_pic; - ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS; + ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS); - if(NULL == ps_ref_pic->pu1_buf1) + if(NULL == ref_pic.pu1_buf1) { - ps_ref_pic = ps_dec->ps_cur_pic; + ref_pic = *ps_dec->ps_cur_pic; } for(u1_i = u1_L0; u1_i < u1_max_ref_idx_l0; u1_i++) { - *ps_ref_pic_buf_lx = *ps_ref_pic; + *ps_ref_pic_buf_lx = ref_pic; ps_ref_pic_buf_lx++; } } @@ -1387,17 +1387,17 @@ void ih264d_init_ref_idx_lx_b(dec_struct_t *ps_dec) /* reference list to handle of errors */ { UWORD8 u1_i; - pic_buffer_t *ps_ref_pic; + pic_buffer_t ref_pic; - ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0]; + ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0]); - if(NULL == ps_ref_pic->pu1_buf1) + if(NULL == ref_pic.pu1_buf1) { - ps_ref_pic = ps_dec->ps_cur_pic; + ref_pic = *ps_dec->ps_cur_pic; } for(u1_i = u1_L0; u1_i < u1_max_ref_idx_l0; u1_i++) { - *ps_ref_pic_buf_lx = *ps_ref_pic; + *ps_ref_pic_buf_lx = ref_pic; ps_ref_pic_buf_lx++; } } @@ -1493,17 +1493,17 @@ void ih264d_init_ref_idx_lx_b(dec_struct_t *ps_dec) /* reference list to handle of errors */ { UWORD8 u1_i; - pic_buffer_t *ps_ref_pic; + pic_buffer_t ref_pic; - ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS; + ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS); - if(NULL == ps_ref_pic->pu1_buf1) + if(NULL == ref_pic.pu1_buf1) { - ps_ref_pic = ps_dec->ps_cur_pic; + ref_pic = *ps_dec->ps_cur_pic; } for(u1_i = u1_L1; u1_i < u1_max_ref_idx_l1; u1_i++) { - *ps_ref_pic_buf_lx = *ps_ref_pic; + *ps_ref_pic_buf_lx = ref_pic; ps_ref_pic_buf_lx++; } } @@ -1520,17 +1520,17 @@ void ih264d_init_ref_idx_lx_b(dec_struct_t *ps_dec) /* reference list to handle of errors */ { UWORD8 u1_i; - pic_buffer_t *ps_ref_pic; + pic_buffer_t ref_pic; - ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0]; + ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0]); - if(NULL == ps_ref_pic->pu1_buf1) + if(NULL == ref_pic.pu1_buf1) { - ps_ref_pic = ps_dec->ps_cur_pic; + ref_pic = *ps_dec->ps_cur_pic; } for(u1_i = u1_L1; u1_i < u1_max_ref_idx_l1; u1_i++) { - *ps_ref_pic_buf_lx = *ps_ref_pic; + *ps_ref_pic_buf_lx = ref_pic; ps_ref_pic_buf_lx++; } } diff --git a/decoder/ih264d_process_pslice.c b/decoder/ih264d_process_pslice.c index efda5cf..2938268 100644 --- a/decoder/ih264d_process_pslice.c +++ b/decoder/ih264d_process_pslice.c @@ -1093,17 +1093,17 @@ void ih264d_init_ref_idx_lx_p(dec_struct_t *ps_dec) /* reference list to handle of errors */ { UWORD8 u1_i; - pic_buffer_t *ps_ref_pic; + pic_buffer_t ref_pic; - ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS; + ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS); - if(NULL == ps_ref_pic->pu1_buf1) + if(NULL == ref_pic.pu1_buf1) { - ps_ref_pic = ps_dec->ps_cur_pic; + ref_pic = *ps_dec->ps_cur_pic; } for(u1_i = u1_L0; u1_i < u1_max_ref_idx_l0; u1_i++) { - *ps_ref_pic_buf_lx = *ps_ref_pic; + *ps_ref_pic_buf_lx = ref_pic; ps_ref_pic_buf_lx++; } } @@ -1119,17 +1119,17 @@ void ih264d_init_ref_idx_lx_p(dec_struct_t *ps_dec) /* reference list to handle of errors */ { UWORD8 u1_i; - pic_buffer_t *ps_ref_pic; + pic_buffer_t ref_pic; - ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0]; + ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0]); - if(NULL == ps_ref_pic->pu1_buf1) + if(NULL == ref_pic.pu1_buf1) { - ps_ref_pic = ps_dec->ps_cur_pic; + ref_pic = *ps_dec->ps_cur_pic; } for(u1_i = u1_L0; u1_i < u1_max_ref_idx_l0; u1_i++) { - *ps_ref_pic_buf_lx = *ps_ref_pic; + *ps_ref_pic_buf_lx = ref_pic; ps_ref_pic_buf_lx++; } }