mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/hevc: Fix modulo operations
Fixes qp fields becoming out of range Fixes: asan_static-oob_e393a3_6998_WPP_A_ericsson_MAIN10_2.bit Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
d66bab0a69
commit
4ced5d7780
|
@ -688,8 +688,8 @@ static int hls_slice_header(HEVCContext *s)
|
||||||
s->HEVClc->first_qp_group = !s->sh.dependent_slice_segment_flag;
|
s->HEVClc->first_qp_group = !s->sh.dependent_slice_segment_flag;
|
||||||
|
|
||||||
if (!s->pps->cu_qp_delta_enabled_flag)
|
if (!s->pps->cu_qp_delta_enabled_flag)
|
||||||
s->HEVClc->qp_y = ((s->sh.slice_qp + 52 + 2 * s->sps->qp_bd_offset) %
|
s->HEVClc->qp_y = FFUMOD(s->sh.slice_qp + 52 + 2 * s->sps->qp_bd_offset,
|
||||||
(52 + s->sps->qp_bd_offset)) - s->sps->qp_bd_offset;
|
52 + s->sps->qp_bd_offset) - s->sps->qp_bd_offset;
|
||||||
|
|
||||||
s->slice_initialized = 1;
|
s->slice_initialized = 1;
|
||||||
|
|
||||||
|
|
|
@ -160,8 +160,8 @@ void ff_hevc_set_qPy(HEVCContext *s, int xC, int yC,
|
||||||
|
|
||||||
if (s->HEVClc->tu.cu_qp_delta != 0) {
|
if (s->HEVClc->tu.cu_qp_delta != 0) {
|
||||||
int off = s->sps->qp_bd_offset;
|
int off = s->sps->qp_bd_offset;
|
||||||
s->HEVClc->qp_y = ((qp_y + s->HEVClc->tu.cu_qp_delta + 52 + 2 * off) %
|
s->HEVClc->qp_y = FFUMOD(qp_y + s->HEVClc->tu.cu_qp_delta + 52 + 2 * off,
|
||||||
(52 + off)) - off;
|
52 + off) - off;
|
||||||
} else
|
} else
|
||||||
s->HEVClc->qp_y = qp_y;
|
s->HEVClc->qp_y = qp_y;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue