aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2020-01-29 23:55:25 +0100
committerMarton Balint <cus@passwd.hu>2020-01-31 00:15:13 +0100
commit62d92a878d89e35695e839f40065f2e936032f89 (patch)
treea5234854b282620fec7bcad4aa6f4758e9549edb /libavfilter
parent5ac8389cfa09e9fd42d076c714be30365a2a8557 (diff)
downloadffmpeg-62d92a878d89e35695e839f40065f2e936032f89.tar.gz
avfilter/vf_drawtext: do not overread text if the last UTF8 sequence is invalid
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/vf_drawtext.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c
index ed10175af0..b58556e0f1 100644
--- a/libavfilter/vf_drawtext.c
+++ b/libavfilter/vf_drawtext.c
@@ -1225,7 +1225,7 @@ 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++, code = 0xfffd; goto continue_on_invalid;);
+ GET_UTF8(code, *p ? *p++ : 0, code = 0xfffd; goto continue_on_invalid;);
continue_on_invalid:
/* skip new line chars, just go to new line */
@@ -1364,7 +1364,7 @@ static int draw_text(AVFilterContext *ctx, AVFrame *frame,
/* load and cache glyphs */
for (i = 0, p = text; *p; i++) {
- GET_UTF8(code, *p++, code = 0xfffd; goto continue_on_invalid;);
+ GET_UTF8(code, *p ? *p++ : 0, code = 0xfffd; goto continue_on_invalid;);
continue_on_invalid:
/* get glyph */
@@ -1388,7 +1388,7 @@ continue_on_invalid:
/* compute and save position for each glyph */
glyph = NULL;
for (i = 0, p = text; *p; i++) {
- GET_UTF8(code, *p++, code = 0xfffd; goto continue_on_invalid2;);
+ GET_UTF8(code, *p ? *p++ : 0, code = 0xfffd; goto continue_on_invalid2;);
continue_on_invalid2:
/* skip the \n in the sequence \r\n */