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

Tim Angus tim at ngus.net
Wed Jan 18 16:31:13 EET 2023


When writing a subtitle SSA/ASS subtitle file, the
AVCodecParameters::extradata buffer is written directly to the output,
potentially including a null terminating character, which is sometimes
present. The result is the output having a null character in the middle;
this is addressed here by avoiding copying it.

Signed-off-by: Tim Angus <tim at ngus.net>
---
 libavformat/assenc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libavformat/assenc.c b/libavformat/assenc.c
index 1600f0a02b..5e74b84575 100644
--- a/libavformat/assenc.c
+++ b/libavformat/assenc.c
@@ -69,6 +69,11 @@ static int write_header(AVFormatContext *s)
                 ass->trailer = trailer;
         }
 
+        /* extradata may or may not be null terminated; in the case where
+         * it is, avoid copying a null into the middle of the buffer */
+        while (header_size > 0 && par->extradata[header_size - 1] == '\0')
+            header_size--;
+
         avio_write(s->pb, par->extradata, header_size);
         if (par->extradata[header_size - 1] != '\n')
             avio_write(s->pb, "\r\n", 2);
-- 
2.25.1



More information about the ffmpeg-devel mailing list