[FFmpeg-devel] [PATCH] Fix issue when invalid nb_index_entries value is read - SPONSORED BY INA (Institut National de l'Audiovisuel)

Cédric Le Barz clebarz at ektacom.com
Fri Mar 24 12:22:23 EET 2023


Hi Marton,

The previous link was not OK, sorry. The good link that will make you 
possible to download the sample is the following : 
https://estendirectapi.ektacom.com/download/ffmpeg/Sample.mxf

Regards,

Cédric


Le 24/03/2023 à 10:13, Cédric Le Barz a écrit :
> Hi Marton,
>
> A sample can be downloaded from here : 
> https://estendirectapi.ektacom.com/download/ffmpeg/
>
> Regards,
>
> Cédric
>
>
> Le 20/03/2023 à 21:03, Marton Balint a écrit :
>>
>>
>> On Mon, 20 Mar 2023, Cédric Le Barz wrote:
>>
>>> We have several samples but these are big files: about 7 GB. Is it 
>>> OK to
>>> share such a file size ?
>>
>> I kind of hoped you have access to the broken muxer and can remux a
>> small file which can be made public.
>>
>> If not, then simply upload it somewhere so I can take a look. If the
>> sample can't be made public, just share it with me privately.
>>
>> Thanks,
>> Marton
>>
>>>
>>> Thanks for you answer,
>>>
>>> Regards,
>>>
>>> Cédric
>>>
>>> Le 16/03/2023 à 21:28, Marton Balint a écrit :
>>>>
>>>>
>>>>  On Thu, 16 Mar 2023, Cédric Le Barz wrote:
>>>>
>>>>>  Hi,
>>>>>
>>>>>  By "invalid", I mean that the written nb_index_entries value does 
>>>>> not
>>>>>  match with the real number of entries in the table. The number of
>>>>>  entries in the table is lower than the specified one. This is a 
>>>>> bug in
>>>>>  commercial MXFTk software (at least version V 2.8.0.0.1). It 
>>>>> exists a
>>>>>  lot a MXF files with this problem.
>>>>
>>>>  Please share a sample. Or better yet, open a ticket for this issue 
>>>> and
>>>>  attach a sample there for future reference.
>>>>
>>>>  Thanks,
>>>>  Marton
>>>>
>>>>>
>>>>>  Best regards,
>>>>>
>>>>>  Cédric
>>>>>
>>>>>  -----Message d'origine-----
>>>>>  De : ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> De la part de 
>>>>> Marton
>>>>>  Balint
>>>>>  Envoyé : mercredi 8 mars 2023 23:06
>>>>>  À : FFmpeg development discussions and patches 
>>>>> <ffmpeg-devel at ffmpeg.org>
>>>>>  Objet : Re: [FFmpeg-devel] [PATCH] Fix issue when invalid
>>>>>  nb_index_entries value is read - SPONSORED BY INA (Institut 
>>>>> National de
>>>>>  l'Audiovisuel)
>>>>>
>>>>>
>>>>>
>>>>>  On Wed, 8 Mar 2023, Cédric Le Barz wrote:
>>>>>
>>>>>>
>>>>>>  Fix issue when invalid nb_index_entries value is read : in case of
>>>>>>  false nb_index_entries value, ffmpeg exit. This patch fix this 
>>>>>> problem.
>>>>>
>>>>>  What do you mean invalid? Is the value wrong, or is the file 
>>>>> truncated in
>>>>>  the middle of the index segment? From the patch it looks like the 
>>>>> latter.
>>>>>
>>>>>  Is there a single unluckily truncated file that you want to fix 
>>>>> with this
>>>>>  patch, or multiple files can be affected by this fix because e.g. 
>>>>> they
>>>>>  are written by the same broken muxer?
>>>>>
>>>>>  Overall I am not sure if we want this applied, the user can also 
>>>>> opt to
>>>>>  avoid parsing all partitions with -seekable 0 and read / remux 
>>>>> the file
>>>>>  sequentially ignoring any index, so if somebody wants to rescue 
>>>>> the data,
>>>>>  it can be done as is.
>>>>>
>>>>>  Regards,
>>>>>  Marton
>>>>>
>>>>>>
>>>>>>
>>>>>>  Signed-off-by: Cedric Le Barz <clebarz at ektacom.com>
>>>>>>  ---
>>>>>>   ffmpeg/libavformat/mxfdec.c | 14 ++++++++++++--
>>>>>>   1 file changed, 12 insertions(+), 2 deletions(-)
>>>>>>
>>>>>>  diff --git a/ffmpeg/libavformat/mxfdec.c 
>>>>>> b/ffmpeg/libavformat/mxfdec.c
>>>>>>  index 4530617..ffc8987 100644
>>>>>>  --- a/ffmpeg/libavformat/mxfdec.c
>>>>>>  +++ b/ffmpeg/libavformat/mxfdec.c
>>>>>>  @@ -1221,8 +1221,18 @@ static int
>>>>>>  mxf_read_index_entry_array(AVIOContext *pb, MXFIndexTableSegment 
>>>>>> *seg
>>>>>>       }
>>>>>>       for (i = 0; i < segment->nb_index_entries; i++) {
>>>>>>  -        if(avio_feof(pb))
>>>>>>  -            return AVERROR_INVALIDDATA;
>>>>>>  +
>>>>>>  +        if(avio_feof(pb)) {
>>>>>>  +            if (i == 0) {
>>>>>>  +                return AVERROR_INVALIDDATA;
>>>>>>  +            } else {
>>>>>>  +                /* To be more robust to invalid 
>>>>>> nb_index_entries value,
>>>>>>  +                   fix the index entry number according to read 
>>>>>> entries
>>>>>>  */
>>>>>>  +                segment->nb_index_entries = i;
>>>>>>  +                return 0;
>>>>>>  +            }
>>>>>>  +        }
>>>>>>  +
>>>>>>           segment->temporal_offset_entries[i] = avio_r8(pb);
>>>>>>           avio_r8(pb); /*
>>>>>>  KeyFrameOffset */
>>>>>>          segment->flag_entries[i] = avio_r8(pb);
>>>>>>  --
>>>>>>  2.34.1
>>>>>>
>>>>>>  _______________________________________________
>>>>>>  ffmpeg-devel mailing list
>>>>>>  ffmpeg-devel at ffmpeg.org
>>>>>>  https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>>>
>>>>>>  To unsubscribe, visit link above, or email
>>>>>>  ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>>>>>>
>>>>>>
>>>>>  _______________________________________________
>>>>>  ffmpeg-devel mailing list
>>>>>  ffmpeg-devel at ffmpeg.org
>>>>>  https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>>
>>>>>  To unsubscribe, visit link above, or email
>>>>>  ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>>>>>
>>>>>  _______________________________________________
>>>>>  ffmpeg-devel mailing list
>>>>>  ffmpeg-devel at ffmpeg.org
>>>>>  https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>>
>>>>>  To unsubscribe, visit link above, or email
>>>>>  ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>>>>  _______________________________________________
>>>>  ffmpeg-devel mailing list
>>>>  ffmpeg-devel at ffmpeg.org
>>>>  https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>
>>>>  To unsubscribe, visit link above, or email
>>>>  ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>>> _______________________________________________
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel at ffmpeg.org
>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>
>>> To unsubscribe, visit link above, or email
>>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>>>
>>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list