[FFmpeg-devel] [PATCH 1/1] avformat/assenc: fix incorrect copy of null terminator

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Thu Jan 5 23:11:11 EET 2023


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.
2. Did you run FATE with your patch? This should actually change the
output of some tests.
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.)

- Andreas



More information about the ffmpeg-devel mailing list