From 519fed01c2846ab9294543a3d2d65efaa51ec85b Mon Sep 17 00:00:00 2001 From: Jerome Jiang Date: Thu, 25 Jan 2018 11:36:53 -0800 Subject: Fix issue for 0 target bitrate in multi-res build. For encoding with --enable-multi-res-encoding, with 1 layer, when the target bitrate is set 0, under these conditions null pointer will be de-referenced. Fix is to check cpi->oxcf.mr_total_resolutions > 1. Also added NULL pointer check. This issue causes crash for asan build in chromium clusterfuzz. BUG=805863 Change-Id: I9cd25af631395bc9fede3a12fb68af4021eb15f8 --- vp8/vp8_cx_iface.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/vp8/vp8_cx_iface.c b/vp8/vp8_cx_iface.c index 784e8c359..d3e200594 100644 --- a/vp8/vp8_cx_iface.c +++ b/vp8/vp8_cx_iface.c @@ -804,11 +804,15 @@ static vpx_codec_err_t vp8e_encode(vpx_codec_alg_priv_t *ctx, if (!ctx->cfg.rc_target_bitrate) { #if CONFIG_MULTI_RES_ENCODING - LOWER_RES_FRAME_INFO *low_res_frame_info = - (LOWER_RES_FRAME_INFO *)ctx->cpi->oxcf.mr_low_res_mode_info; - low_res_frame_info->skip_encoding_prev_stream = 1; - if (ctx->cpi->oxcf.mr_encoder_id == 0) - low_res_frame_info->skip_encoding_base_stream = 1; + if (!ctx->cpi) return VPX_CODEC_ERROR; + if (ctx->cpi->oxcf.mr_total_resolutions > 1) { + LOWER_RES_FRAME_INFO *low_res_frame_info = + (LOWER_RES_FRAME_INFO *)ctx->cpi->oxcf.mr_low_res_mode_info; + if (!low_res_frame_info) return VPX_CODEC_ERROR; + low_res_frame_info->skip_encoding_prev_stream = 1; + if (ctx->cpi->oxcf.mr_encoder_id == 0) + low_res_frame_info->skip_encoding_base_stream = 1; + } #endif return res; } -- cgit v1.2.3