[FFmpeg-devel] [PATCH] mpegts: prevent division by zero

Andreas Cadhalpun andreas.cadhalpun at googlemail.com
Tue Nov 8 23:30:10 EET 2016


On 08.11.2016 22:12, Michael Niedermayer wrote:
> On Tue, Nov 08, 2016 at 09:38:49PM +0100, Andreas Cadhalpun wrote:
>> On 08.11.2016 21:09, Michael Niedermayer wrote:
>>> On Tue, Nov 08, 2016 at 07:47:02PM +0100, Andreas Cadhalpun wrote:
>>>> On 08.11.2016 00:54, Michael Niedermayer wrote:
>>>>> On Mon, Nov 07, 2016 at 11:49:52PM +0100, Andreas Cadhalpun wrote:
>>>>>> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
>>>>>> ---
>>>>>>  libavformat/mpegts.c | 4 ++++
>>>>>>  1 file changed, 4 insertions(+)
>>>>>>
>>>>>> diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
>>>>>> index fad10c6..77d63f2 100644
>>>>>> --- a/libavformat/mpegts.c
>>>>>> +++ b/libavformat/mpegts.c
>>>>>> @@ -2692,6 +2692,10 @@ static int mpegts_read_header(AVFormatContext *s)
>>>>>>          /* NOTE1: the bitrate is computed without the FEC */
>>>>>>          /* NOTE2: it is only the bitrate of the start of the stream */
>>>>>>          ts->pcr_incr = (pcrs[1] - pcrs[0]) / (packet_count[1] - packet_count[0]);
>>>>>> +        if (ts->pcr_incr <= 0) {
>>>>>> +            av_log(s, AV_LOG_ERROR, "invalid pcr increment %d\n", ts->pcr_incr);
>>>>>> +            return AVERROR_INVALIDDATA;
>>>>>> +        }
>>>>>
>>>>> if a pcr pair is bad i would suggest to run the loop by another
>>>>> iteration
>>>>
>>>> That's a good idea. New patch attached.
>>>
>>> LGTM, maybe add a av_log() so the user knows of the issue
>>
>> Makes sense, patch with added log message is attached.
>>
>>> (especially
>>> if all pcr are systematically bad, n which case this would need to be
>>> adjusted to not fail)
>>
>> What do you think should be done in that case?
> 
> if you want to implement that case before theres a file found that
> needs it,
> ignore the pcr, set things that depend on them to "unknown" /
> AV_NOPTS_VALUE

That wouldn't be trivial to implement so I've just pushed the patch as is.

Best regards,
Andreas



More information about the ffmpeg-devel mailing list