Skip to content
This repository was archived by the owner on Jan 31, 2025. It is now read-only.

Commit 24d43e4

Browse files
committed
Check pointers against NULL before using
This fixes #90 Signed-off-by: Xiang, Haihao <[email protected]> (cherry picked from commit ee5ccfb)
1 parent 62b4194 commit 24d43e4

File tree

2 files changed

+151
-12
lines changed

2 files changed

+151
-12
lines changed

src/gen9_avc_encoder.c

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,6 +1722,9 @@ void gen9_avc_set_image_state(VADriverContextP ctx,
17221722

17231723
pdata = i965_map_gpe_resource(gpe_resource);
17241724

1725+
if (!pdata)
1726+
return;
1727+
17251728
gen9_avc_init_mfx_avc_img_state(ctx,encode_state,encoder_context,&cmd);
17261729
for(i = 0; i < generic_state->num_pak_passes;i++)
17271730
{
@@ -1762,6 +1765,9 @@ void gen9_avc_set_image_state_non_brc(VADriverContextP ctx,
17621765

17631766
pdata = i965_map_gpe_resource(gpe_resource);
17641767

1768+
if (!pdata)
1769+
return;
1770+
17651771
gen9_avc_init_mfx_avc_img_state(ctx,encode_state,encoder_context,&cmd);
17661772

17671773
if(generic_state->curr_pak_pass == 0)
@@ -2064,6 +2070,9 @@ gen9_avc_set_curbe_brc_init_reset(VADriverContextP ctx,
20642070

20652071
cmd = i965_gpe_context_map_curbe(gpe_context);
20662072

2073+
if (!cmd)
2074+
return;
2075+
20672076
memcpy(cmd,&gen9_avc_brc_init_reset_curbe_init_data,sizeof(gen9_avc_brc_init_reset_curbe_data));
20682077

20692078
memset(&common_param,0,sizeof(common_param));
@@ -2289,6 +2298,9 @@ gen9_avc_set_curbe_brc_frame_update(VADriverContextP ctx,
22892298

22902299
cmd = i965_gpe_context_map_curbe(gpe_context);
22912300

2301+
if (!cmd)
2302+
return;
2303+
22922304
memcpy(cmd,&gen9_avc_frame_brc_update_curbe_init_data,sizeof(gen9_avc_frame_brc_update_curbe_data));
22932305

22942306
cmd->dw5.target_size_flag = 0 ;
@@ -2612,6 +2624,10 @@ gen9_avc_set_curbe_brc_mb_update(VADriverContextP ctx,
26122624
struct generic_enc_codec_state * generic_state = (struct generic_enc_codec_state * )vme_context->generic_enc_state;
26132625

26142626
cmd = i965_gpe_context_map_curbe(gpe_context);
2627+
2628+
if (!cmd)
2629+
return;
2630+
26152631
memset(cmd,0,sizeof(gen9_avc_mb_brc_curbe_data));
26162632

26172633
cmd->dw0.cur_frame_type = generic_state->frame_type;
@@ -2990,6 +3006,10 @@ gen9_avc_set_curbe_mbenc(VADriverContextP ctx,
29903006
qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
29913007

29923008
cmd = (gen9_avc_mbenc_curbe_data *)i965_gpe_context_map_curbe(gpe_context);
3009+
3010+
if (!cmd)
3011+
return;
3012+
29933013
memset(cmd,0,sizeof(gen9_avc_mbenc_curbe_data));
29943014

29953015
if(mbenc_i_frame_dist_in_use)
@@ -5673,14 +5693,19 @@ static void
56735693
gen9_avc_vme_context_destroy(void * context)
56745694
{
56755695
struct encoder_vme_mfc_context *vme_context = (struct encoder_vme_mfc_context *)context;
5676-
struct generic_encoder_context * generic_ctx = (struct generic_encoder_context * )vme_context->generic_enc_ctx;
5677-
struct i965_avc_encoder_context * avc_ctx = (struct i965_avc_encoder_context * )vme_context->private_enc_ctx;
5678-
struct generic_enc_codec_state * generic_state = (struct generic_enc_codec_state * )vme_context->generic_enc_state;
5679-
struct avc_enc_state * avc_state = (struct avc_enc_state * )vme_context->private_enc_state;
5696+
struct generic_encoder_context *generic_ctx;
5697+
struct i965_avc_encoder_context *avc_ctx;
5698+
struct generic_enc_codec_state *generic_state;
5699+
struct avc_enc_state *avc_state;
56805700

56815701
if (!vme_context)
56825702
return;
56835703

5704+
generic_ctx = (struct generic_encoder_context * )vme_context->generic_enc_ctx;
5705+
avc_ctx = (struct i965_avc_encoder_context * )vme_context->private_enc_ctx;
5706+
generic_state = (struct generic_enc_codec_state * )vme_context->generic_enc_state;
5707+
avc_state = (struct avc_enc_state * )vme_context->private_enc_state;
5708+
56845709
gen9_avc_kernel_destroy(vme_context);
56855710

56865711
free(generic_ctx);
@@ -7264,14 +7289,16 @@ static void
72647289
gen9_avc_pak_context_destroy(void * context)
72657290
{
72667291
struct encoder_vme_mfc_context * pak_context = (struct encoder_vme_mfc_context *)context;
7267-
struct generic_encoder_context * generic_ctx = (struct generic_encoder_context * )pak_context->generic_enc_ctx;
7268-
struct i965_avc_encoder_context * avc_ctx = (struct i965_avc_encoder_context * )pak_context->private_enc_ctx;
7269-
7292+
struct generic_encoder_context * generic_ctx;
7293+
struct i965_avc_encoder_context * avc_ctx;
72707294
int i = 0;
72717295

72727296
if (!pak_context)
72737297
return;
72747298

7299+
generic_ctx = (struct generic_encoder_context * )pak_context->generic_enc_ctx;
7300+
avc_ctx = (struct i965_avc_encoder_context * )pak_context->private_enc_ctx;
7301+
72757302
// other things
72767303
i965_free_gpe_resource(&generic_ctx->res_reconstructed_surface);
72777304
i965_free_gpe_resource(&avc_ctx->res_post_deblocking_output);

0 commit comments

Comments
 (0)