[FFmpeg-devel] [PATCH] aaccoder: prevent crash of anmr coder

Andreas Cadhalpun andreas.cadhalpun at googlemail.com
Sat Dec 5 01:21:23 CET 2015


On 04.12.2015 23:49, Claudio Freire wrote:
> On Fri, Dec 4, 2015 at 2:23 PM, Andreas Cadhalpun
> <andreas.cadhalpun at googlemail.com> wrote:
>> If minq is negative, the range of sf_idx can be larger than
>> SCALE_MAX_DIFF allows, causing assertion failures later in
>> encode_scale_factors.
>>
>> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
>> ---
>>  libavcodec/aaccoder.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/aaccoder.c b/libavcodec/aaccoder.c
>> index 2a0cb1f..e8a61ce 100644
>> --- a/libavcodec/aaccoder.c
>> +++ b/libavcodec/aaccoder.c
>> @@ -370,7 +370,7 @@ static void search_for_quantizers_anmr(AVCodecContext *avctx, AACEncContext *s,
>>      }
>>      while (idx) {
>>          sce->sf_idx[bandaddr[idx]] = minq + q0;
>> -        minq = paths[idx][minq].prev;
>> +        minq = FFMAX(paths[idx][minq].prev, 0);
>>          idx--;
>>      }
>>      //set the same quantizers inside window groups
> 
> Actually, a negative .prev signals an impossible path.
> 
> So perhaps the attached patch (well, git diff) would go better? (if
> you confirm it passes fuzzing I'll push it)

That diff doesn't change anything, because in the problematic case
paths[idx][i].cost is always inf, anyway.

Best regards,
Andreas



More information about the ffmpeg-devel mailing list