Prevent read to invalid RefBuffer
This commit adds check to validate RefBuffer before reading into the data structure, to prevent invalid read. BUG=https://bugs.chromium.org/p/chromium/issues/detail?id=614701 Change-Id: Ie111e95bd18e88fa19d8b25e097cdf52b7139cb6
This commit is contained in:
parent
7acd0a59ca
commit
75b6cfe1c5
@ -1339,22 +1339,23 @@ static void setup_frame_size_with_refs(VP9_COMMON *cm,
|
||||
// has valid dimensions.
|
||||
for (i = 0; i < REFS_PER_FRAME; ++i) {
|
||||
RefBuffer *const ref_frame = &cm->frame_refs[i];
|
||||
has_valid_ref_frame |= valid_ref_frame_size(ref_frame->buf->y_crop_width,
|
||||
ref_frame->buf->y_crop_height,
|
||||
width, height);
|
||||
has_valid_ref_frame |= (ref_frame->idx != INVALID_IDX &&
|
||||
valid_ref_frame_size(ref_frame->buf->y_crop_width,
|
||||
ref_frame->buf->y_crop_height,
|
||||
width, height));
|
||||
}
|
||||
if (!has_valid_ref_frame)
|
||||
vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
|
||||
"Referenced frame has invalid size");
|
||||
for (i = 0; i < REFS_PER_FRAME; ++i) {
|
||||
RefBuffer *const ref_frame = &cm->frame_refs[i];
|
||||
if (!valid_ref_frame_img_fmt(
|
||||
ref_frame->buf->bit_depth,
|
||||
ref_frame->buf->subsampling_x,
|
||||
ref_frame->buf->subsampling_y,
|
||||
cm->bit_depth,
|
||||
cm->subsampling_x,
|
||||
cm->subsampling_y))
|
||||
if (ref_frame->idx == INVALID_IDX ||
|
||||
!valid_ref_frame_img_fmt(ref_frame->buf->bit_depth,
|
||||
ref_frame->buf->subsampling_x,
|
||||
ref_frame->buf->subsampling_y,
|
||||
cm->bit_depth,
|
||||
cm->subsampling_x,
|
||||
cm->subsampling_y))
|
||||
vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
|
||||
"Referenced frame has incompatible color format");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user