[FFmpeg-cvslog] avfilter/vf_drawtext: use replacement chars for invalid UTF8 sequences
Marton Balint
git at videolan.org
Fri Jan 31 01:25:01 EET 2020
ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Wed Jan 29 23:29:04 2020 +0100| [5ac8389cfa09e9fd42d076c714be30365a2a8557] | committer: Marton Balint
avfilter/vf_drawtext: use replacement chars for invalid UTF8 sequences
continue is explicitly disallowed for GET_UTF8, so let's fix that as well.
Fixes crash with invalid UTF8 sequences.
Signed-off-by: Marton Balint <cus at passwd.hu>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5ac8389cfa09e9fd42d076c714be30365a2a8557
---
libavfilter/vf_drawtext.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c
index aea17b6793..ed10175af0 100644
--- a/libavfilter/vf_drawtext.c
+++ b/libavfilter/vf_drawtext.c
@@ -1225,7 +1225,8 @@ static int draw_glyphs(DrawTextContext *s, AVFrame *frame,
for (i = 0, p = text; *p; i++) {
FT_Bitmap bitmap;
Glyph dummy = { 0 };
- GET_UTF8(code, *p++, continue;);
+ GET_UTF8(code, *p++, code = 0xfffd; goto continue_on_invalid;);
+continue_on_invalid:
/* skip new line chars, just go to new line */
if (code == '\n' || code == '\r' || code == '\t')
@@ -1363,7 +1364,8 @@ static int draw_text(AVFilterContext *ctx, AVFrame *frame,
/* load and cache glyphs */
for (i = 0, p = text; *p; i++) {
- GET_UTF8(code, *p++, continue;);
+ GET_UTF8(code, *p++, code = 0xfffd; goto continue_on_invalid;);
+continue_on_invalid:
/* get glyph */
dummy.code = code;
@@ -1386,7 +1388,8 @@ static int draw_text(AVFilterContext *ctx, AVFrame *frame,
/* compute and save position for each glyph */
glyph = NULL;
for (i = 0, p = text; *p; i++) {
- GET_UTF8(code, *p++, continue;);
+ GET_UTF8(code, *p++, code = 0xfffd; goto continue_on_invalid2;);
+continue_on_invalid2:
/* skip the \n in the sequence \r\n */
if (prev_code == '\r' && code == '\n')
More information about the ffmpeg-cvslog
mailing list