[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