Added clamp of qindex to valid range The qindex for a segment was not clamped in ABSDATA mode, which may cause invalid memory access if an ill-formed stream has a negative value in ABSDATA mode. This commit added clamp to make sure qindex for a segment always fall into valid range. Change-Id: I0a74d00f4ef40aec7edaeca1d03c8645e23ab08c
diff --git a/vp9/common/vp9_quant_common.c b/vp9/common/vp9_quant_common.c index 9fef8b1..def1255 100644 --- a/vp9/common/vp9_quant_common.c +++ b/vp9/common/vp9_quant_common.c
@@ -134,9 +134,9 @@ int base_qindex) { if (vp9_segfeature_active(seg, segment_id, SEG_LVL_ALT_Q)) { const int data = vp9_get_segdata(seg, segment_id, SEG_LVL_ALT_Q); - return seg->abs_delta == SEGMENT_ABSDATA ? - data : // Abs value - clamp(base_qindex + data, 0, MAXQ); // Delta value + const int seg_qindex = seg->abs_delta == SEGMENT_ABSDATA ? + data : base_qindex + data; + return clamp(seg_qindex, 0, MAXQ); } else { return base_qindex; }