diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-01-21 18:30:01 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-01-21 18:31:04 +0400 |
commit | 5b93b2722dea3e73612fe3001113387f842ed9f8 (patch) | |
tree | 58a7dd5a716a0043e4c9921e893b58cc6dfbae2d /libavcodec/hevc_ps.c | |
parent | c7b454f7a42e3d92ab54fcb40c3d12cf8b7efc70 (diff) | |
parent | 838740e6420538ad45982da6b1d3aa3ae91307f5 (diff) |
Merge commit '838740e6420538ad45982da6b1d3aa3ae91307f5'
* commit '838740e6420538ad45982da6b1d3aa3ae91307f5':
hevc: Prevent some integer overflows
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/hevc_ps.c')
-rw-r--r-- | libavcodec/hevc_ps.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 26666a1f88..302a59f247 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -92,7 +92,7 @@ int ff_hevc_decode_short_term_rps(HEVCContext *s, ShortTermRPS *rps, uint8_t delta_rps_sign; if (is_slice_header) { - int delta_idx = get_ue_golomb_long(gb) + 1; + unsigned int delta_idx = get_ue_golomb_long(gb) + 1; if (delta_idx > sps->nb_st_rps) { av_log(s->avctx, AV_LOG_ERROR, "Invalid value of delta_idx in slice header RPS: %d > %d.\n", @@ -245,7 +245,7 @@ static void parse_ptl(HEVCContext *s, PTL *ptl, int max_num_sub_layers) } } -static void decode_sublayer_hrd(HEVCContext *s, int nb_cpb, +static void decode_sublayer_hrd(HEVCContext *s, unsigned int nb_cpb, int subpic_params_present) { GetBitContext *gb = &s->HEVClc->gb; @@ -299,7 +299,7 @@ static void decode_hrd(HEVCContext *s, int common_inf_present, for (i = 0; i < max_sublayers; i++) { int low_delay = 0; - int nb_cpb = 1; + unsigned int nb_cpb = 1; int fixed_rate = get_bits1(gb); if (!fixed_rate) @@ -555,18 +555,18 @@ static int scaling_list_data(HEVCContext *s, ScalingList *sl) GetBitContext *gb = &s->HEVClc->gb; uint8_t scaling_list_pred_mode_flag[4][6]; int32_t scaling_list_dc_coef[2][6]; - int size_id, matrix_id, i, pos, delta; + int size_id, matrix_id, i, pos; for (size_id = 0; size_id < 4; size_id++) for (matrix_id = 0; matrix_id < (size_id == 3 ? 2 : 6); matrix_id++) { scaling_list_pred_mode_flag[size_id][matrix_id] = get_bits1(gb); if (!scaling_list_pred_mode_flag[size_id][matrix_id]) { - delta = get_ue_golomb_long(gb); + unsigned int delta = get_ue_golomb_long(gb); /* Only need to handle non-zero delta. Zero means default, * which should already be in the arrays. */ if (delta) { // Copy from previous array. - if (matrix_id - delta < 0) { + if (matrix_id < delta) { av_log(s->avctx, AV_LOG_ERROR, "Invalid delta in scaling list data: %d.\n", delta); return AVERROR_INVALIDDATA; |