On Mon, Dec 10, 2012 at 4:18 PM, Måns Rullgård <[email protected]> wrote: > Jindřich Makovička <[email protected]> writes: > >> On Mon, Dec 10, 2012 at 3:00 PM, Måns Rullgård <[email protected]> wrote: >>> Jindřich Makovička <[email protected]> writes: >>> >>>> diff --git a/libavcodec/aacsbr.c b/libavcodec/aacsbr.c >>>> index add9f18..dac2372 100644 >>>> --- a/libavcodec/aacsbr.c >>>> +++ b/libavcodec/aacsbr.c >>>> @@ -926,7 +926,9 @@ static void read_sbr_extension(AACContext *ac, >>>> SpectralBandReplication *sbr, >>>> } >>>> break; >>>> default: >>>> - av_log_missing_feature(ac->avctx, "Reserved SBR extensions", 1); >>>> + // some files contain 0-padding >>>> + if (bs_extension_id || *num_bits_left > 16 || show_bits(gb, >>>> *num_bits_left)) >>> >>> show_bits() is undefined for lengths >25. Does something guarantee that >>> this can't happen here? >> >> AFAICS, the *num_bits_left > 16 comparison just before show_bits() . > > I guess I'm blind.
To be more precise, when *num_bits_left > 16, the whole expression evaluates as true and show_bits(gb, *num_bits_left) won't be called. So get_bits() will be used to get 16 bits at most. -- Jindřich Makovička _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
