Commit 62d92a87 authored by Marton Balint's avatar Marton Balint

avfilter/vf_drawtext: do not overread text if the last UTF8 sequence is invalid

Signed-off-by: 's avatarMarton Balint <cus@passwd.hu>
parent 5ac8389c
...@@ -1225,7 +1225,7 @@ static int draw_glyphs(DrawTextContext *s, AVFrame *frame, ...@@ -1225,7 +1225,7 @@ static int draw_glyphs(DrawTextContext *s, AVFrame *frame,
for (i = 0, p = text; *p; i++) { for (i = 0, p = text; *p; i++) {
FT_Bitmap bitmap; FT_Bitmap bitmap;
Glyph dummy = { 0 }; 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: continue_on_invalid:
/* skip new line chars, just go to new line */ /* skip new line chars, just go to new line */
...@@ -1364,7 +1364,7 @@ static int draw_text(AVFilterContext *ctx, AVFrame *frame, ...@@ -1364,7 +1364,7 @@ static int draw_text(AVFilterContext *ctx, AVFrame *frame,
/* load and cache glyphs */ /* load and cache glyphs */
for (i = 0, p = text; *p; i++) { 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: continue_on_invalid:
/* get glyph */ /* get glyph */
...@@ -1388,7 +1388,7 @@ continue_on_invalid: ...@@ -1388,7 +1388,7 @@ continue_on_invalid:
/* compute and save position for each glyph */ /* compute and save position for each glyph */
glyph = NULL; glyph = NULL;
for (i = 0, p = text; *p; i++) { 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: continue_on_invalid2:
/* skip the \n in the sequence \r\n */ /* skip the \n in the sequence \r\n */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment