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)
{
GetBitContext *gb = &s->HEVClc->gb;
@ -312,14 +312,20 @@ static void decode_hrd(HEVCContext *s, int common_inf_present,
else
low_delay = get_bits1(gb);
if (!low_delay)
if (!low_delay) {
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)
decode_sublayer_hrd(s, nb_cpb, subpic_params_present);
if (vcl_params_present)
decode_sublayer_hrd(s, nb_cpb, subpic_params_present);
}
return 0;
}
int ff_hevc_decode_nal_vps(HEVCContext *s)