avcodec/hevc: check nb_cpb

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-07-19 16:43:13 +02:00
parent 7a4a5515b0
commit ba80b8d29b

View File

@ -265,7 +265,7 @@ static void decode_sublayer_hrd(HEVCContext *s, unsigned int nb_cpb,
} }
} }
static void decode_hrd(HEVCContext *s, int common_inf_present, static int decode_hrd(HEVCContext *s, int common_inf_present,
int max_sublayers) int max_sublayers)
{ {
GetBitContext *gb = &s->HEVClc->gb; GetBitContext *gb = &s->HEVClc->gb;
@ -312,14 +312,20 @@ static void decode_hrd(HEVCContext *s, int common_inf_present,
else else
low_delay = get_bits1(gb); low_delay = get_bits1(gb);
if (!low_delay) if (!low_delay) {
nb_cpb = get_ue_golomb_long(gb) + 1; nb_cpb = get_ue_golomb_long(gb) + 1;
if (nb_cpb < 1 || nb_cpb > 32) {
av_log(s->avctx, AV_LOG_ERROR, "nb_cpb %d invalid\n", nb_cpb);
return AVERROR_INVALIDDATA;
}
}
if (nal_params_present) if (nal_params_present)
decode_sublayer_hrd(s, nb_cpb, subpic_params_present); decode_sublayer_hrd(s, nb_cpb, subpic_params_present);
if (vcl_params_present) if (vcl_params_present)
decode_sublayer_hrd(s, nb_cpb, subpic_params_present); decode_sublayer_hrd(s, nb_cpb, subpic_params_present);
} }
return 0;
} }
int ff_hevc_decode_nal_vps(HEVCContext *s) int ff_hevc_decode_nal_vps(HEVCContext *s)