ref: 519fed01c2846ab9294543a3d2d65efaa51ec85b
parent: d069f4c29d6958944ad145faeac8e57f8de9f353
author: Jerome Jiang <jianj@google.com>
date: Thu Jan 25 06:36:53 EST 2018
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
--- a/vp8/vp8_cx_iface.c
+++ b/vp8/vp8_cx_iface.c
@@ -804,11 +804,15 @@
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;
}