mirror of https://git.ffmpeg.org/ffmpeg.git
avfilter/vf_drawtext: do not overread text if the last UTF8 sequence is invalid
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
5ac8389cfa
commit
62d92a878d
|
@ -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,
|
||||||
|
|
||||||
/* 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:
|
||||||
/* 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 */
|
||||||
|
|
Loading…
Reference in New Issue