On Thu, Jan 5, 2012 at 1:01 PM, Reinhard Tartler <siret...@tauware.de> wrote:
> From: Chris Evans <cev...@chromium.org>
>
> Fixes Bug: #190
> Chromium Bug: #100543
> Related to CVE-2011-3893
>
> Signed-off-by: Reinhard Tartler <siret...@tauware.de>
> ---
>  libavcodec/vorbis.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
>
> I've implemented Ronald's second suggestion.
>
> diff --git a/libavcodec/vorbis.c b/libavcodec/vorbis.c
> index 86df288..66364d1 100644
> --- a/libavcodec/vorbis.c
> +++ b/libavcodec/vorbis.c
> @@ -152,7 +152,7 @@ void ff_vorbis_ready_floor1_list(vorbis_floor1_entry * 
> list, int values)
>     }
>  }
>
> -static inline void render_line_unrolled(intptr_t x, intptr_t y, int x1,
> +static inline void render_line_unrolled(intptr_t x, unsigned char y, int x1,
>                                         intptr_t sy, int ady, int adx,
>                                         float *buf)
>  {
> @@ -175,7 +175,7 @@ static inline void render_line_unrolled(intptr_t x, 
> intptr_t y, int x1,
>     }
>  }
>
> -static void render_line(int x0, int y0, int x1, int y1, float *buf)
> +static void render_line(int x0, unsigned char y0, int x1, int y1, float *buf)
>  {
>     int dy  = y1 - y0;
>     int adx = x1 - x0;
> @@ -187,7 +187,7 @@ static void render_line(int x0, int y0, int x1, int y1, 
> float *buf)
>     } else {
>         int base = dy / adx;
>         int x    = x0;
> -        int y    = y0;
> +        unsigned char y = y0;
>         int err  = -adx;
>         ady -= FFABS(base) * adx;
>         while (++x < x1) {
> --

Relying on undefined language behavior to solve a problem is a terrible idea.

Jason
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to