[FFmpeg-devel] [PATCH] avcodec/cbs_h2645: Fail on all 0 NAL units

James Almer jamrial at gmail.com
Fri Dec 13 00:52:08 EET 2019


On 12/12/2019 7:15 PM, Andriy Gelman wrote:
> On Thu, 12. Dec 18:43, Michael Niedermayer wrote:
>> Fixes: assertion failure
>> Fixes: 19286/clusterfuzz-testcase-minimized-ffmpeg_BSF_H264_REDUNDANT_PPS_fuzzer-5707990724509696
>>
>> Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
>> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
>> ---
>>  libavcodec/cbs_h2645.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
>> index 5f71d80584..5e0f4a9d98 100644
>> --- a/libavcodec/cbs_h2645.c
>> +++ b/libavcodec/cbs_h2645.c
>> @@ -568,7 +568,8 @@ static int cbs_h2645_fragment_add_nals(CodedBitstreamContext *ctx,
>>          // Remove trailing zeroes.
>>          while (size > 0 && nal->data[size - 1] == 0)
>>              --size;
>> -        av_assert0(size > 0);
> 
>> +        if (size == 0)
>> +            return AVERROR_INVALIDDATA;
> 
> I suppose there could still be some valid nal units in this packet list.
> 
> Can you just continue in the loop and not insert this particular nal unit into
> frag? 

This is preferable than aborting, yes. If it can't be skipped in
ff_h2645_packet_split(), the place I'd consider proper for this (cbs is
not the only user of that function), then it should be skipped here.


More information about the ffmpeg-devel mailing list