diff mbox series

[FFmpeg-devel,6/6] avfilter/vf_drawtext: do not overread text if the last UTF8 sequence is invalid

Message ID 20200129233235.3325-6-cus@passwd.hu
State New
Headers show
Series [FFmpeg-devel,1/6] avutil/common: use unsigned int in GET_UTF8
Related show

Checks

Context Check Description
andriy/ffmpeg-patchwork pending
andriy/ffmpeg-patchwork success Applied patch
andriy/ffmpeg-patchwork success Configure finished
andriy/ffmpeg-patchwork success Make finished
andriy/ffmpeg-patchwork success Make fate finished

Commit Message

Marton Balint Jan. 29, 2020, 11:32 p.m. UTC
Signed-off-by: Marton Balint <cus@passwd.hu>
---
 libavfilter/vf_drawtext.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Paul B Mahol Jan. 30, 2020, 10:38 a.m. UTC | #1
lgtm

On 1/30/20, Marton Balint <cus@passwd.hu> wrote:
> Signed-off-by: Marton Balint <cus@passwd.hu>
> ---
>  libavfilter/vf_drawtext.c | 6 +++---
>  1 file 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 */
> --
> 2.16.4
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox series

Patch

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 */