Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-01-06 05:51:20 +0400
committerMichael Niedermayer <michaelni@gmx.at>2014-01-06 07:32:37 +0400
commit4ced5d7780fea2ea49444d6686d26f26b3a2160f (patch)
tree62e1e3d0927c79dd6506de1c4aba4b6f45a6b030
parentd66bab0a69ac1860e78dd951ad8db1a507e75642 (diff)
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>
-rw-r--r--libavcodec/hevc.c4
-rw-r--r--libavcodec/hevc_filter.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
index 2f33d1d8a0..f001a6c627 100644
--- a/libavcodec/hevc.c
+++ b/libavcodec/hevc.c
@@ -688,8 +688,8 @@ static int hls_slice_header(HEVCContext *s)
s->HEVClc->first_qp_group = !s->sh.dependent_slice_segment_flag;
if (!s->pps->cu_qp_delta_enabled_flag)
- s->HEVClc->qp_y = ((s->sh.slice_qp + 52 + 2 * s->sps->qp_bd_offset) %
- (52 + s->sps->qp_bd_offset)) - 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;
s->slice_initialized = 1;
diff --git a/libavcodec/hevc_filter.c b/libavcodec/hevc_filter.c
index ae72fbbe49..8353e15ea0 100644
--- a/libavcodec/hevc_filter.c
+++ b/libavcodec/hevc_filter.c
@@ -160,8 +160,8 @@ void ff_hevc_set_qPy(HEVCContext *s, int xC, int yC,
if (s->HEVClc->tu.cu_qp_delta != 0) {
int off = s->sps->qp_bd_offset;
- s->HEVClc->qp_y = ((qp_y + s->HEVClc->tu.cu_qp_delta + 52 + 2 * off) %
- (52 + off)) - off;
+ s->HEVClc->qp_y = FFUMOD(qp_y + s->HEVClc->tu.cu_qp_delta + 52 + 2 * off,
+ 52 + off) - off;
} else
s->HEVClc->qp_y = qp_y;
}