shithub: libvpx

Download patch

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;
   }