[FFmpeg-devel] [PATCH 1/1] avformat/assenc: fix incorrect copy of null terminator
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Fri Jan 6 00:03:59 EET 2023
Tim Angus:
>
>
> On 05/01/2023 21:11, Andreas Rheinhardt wrote:
>> Tim Angus:
>>> Signed-off-by: Tim Angus <tim at ngus.net>
>>> ---
>>> libavformat/assenc.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libavformat/assenc.c b/libavformat/assenc.c
>>> index 1600f0a02b..07b6e3a171 100644
>>> --- a/libavformat/assenc.c
>>> +++ b/libavformat/assenc.c
>>> @@ -69,7 +69,7 @@ static int write_header(AVFormatContext *s)
>>> ass->trailer = trailer;
>>> }
>>> - avio_write(s->pb, par->extradata, header_size);
>>> + avio_write(s->pb, par->extradata, header_size - 1);
>>> if (par->extradata[header_size - 1] != '\n')
>>> avio_write(s->pb, "\r\n", 2);
>>> ass->ssa_mode = !strstr(par->extradata, "\n[V4+ Styles]");
>> 1. The rationale for the patch (that you mentioned in the cover letter)
>> should be part of the commit message.
> Fair enough.
>> 2. Did you run FATE with your patch? This should actually change the
>> output of some tests.
> Yes I did; no failures locally, though I see there are failures in this
> "patchwork" thingy, presumably that is running extra tests?
Did you run FATE with samples or without?
>> 3. The '\0' is not supposed to be accounted for in extradata_size;
>> extradata is supposed to be padded with AV_INPUT_BUFFER_PADDING_SIZE
>> zero bytes, the first of which also acts as trailing zero for formats
>> for which extradata is a C-string. (And anyway: There are cases where
>> header_size does not coincide with extradata_size, yet you are also
>> changing them.)
>>
> Having read this, I did a bit more digging and it appears as though the
> source of the extra nul may actually be embedded in the file I was
> having trouble with in the first place itself, so my patch is probably
> prematurely submitted, sorry. mkvtoolnix seems to extract the subtitle
> file with no trouble so it's not really clear where the fault lies. I'm
> probably better submitting a bug to the tracker rather than trying to
> fix it myself, tbh.
>
> (Out of interest, what is the policy WRT to broken files? You could make
> a reasonable case that the encoder should filter the extra nul, assuming
> of course that the extra nul is indeed extra and there is no ffmpeg bug.)
More information about the ffmpeg-devel
mailing list