[PATCH] smoke: fix valgrind invalid read errors

Pekka Paalanen ppaalanen at gmail.com
Tue Nov 11 03:01:17 PST 2014


On Tue, 28 Oct 2014 10:50:18 +0000
Frank Binns <frank.binns at imgtec.com> wrote:

> There are a number of invalid read errors reported by valgrind of the
> form:
> 	==13428== Invalid read of size 4
>         ==13428==    at 0x405656: advect (smoke.c:116)
>         ==13428==    by 0x405E80: redraw_handler (smoke.c:228)
>         ==13428==    by 0x40DE74: widget_redraw (window.c:3995)
>         ==13428==    by 0x40E02D: surface_redraw (window.c:4053)
>         ==13428==    by 0x40E0C9: idle_redraw (window.c:4082)
>         ==13428==    by 0x410FC9: display_run (window.c:5561)
>         ==13428==    by 0x406518: main (smoke.c:373)
>         ==13428==  Address 0xb2c9b14 is 4 bytes after a block of size
>                    160,000 alloc'd
>         ==13428==    at 0x4C29DB4: calloc
>         ==13428==    by 0x40646B: main (smoke.c:360)
> 
> This results in invalid rendering when running a debug version of the
> application.
> 
> Fix the issue by limiting the maximum values of px and py to 1.5 less
> than width and height. This prevents reading past the end of the source
> buffer.
> 
> Bug: https://bugs.freedesktop.org/show_bug.cgi?id=82287
> Signed-off-by: Frank Binns <frank.binns at imgtec.com>
> ---
>  clients/smoke.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/clients/smoke.c b/clients/smoke.c
> index 65b6e03..245e226 100644
> --- a/clients/smoke.c
> +++ b/clients/smoke.c
> @@ -88,10 +88,10 @@ static void advect(struct smoke *smoke, uint32_t time,
>  				px = 0.5;
>  			if (py < 0.5)
>  				py = 0.5;
> -			if (px > smoke->width - 0.5)
> -				px = smoke->width - 0.5;
> -			if (py > smoke->height - 0.5)
> -				py = smoke->height - 0.5;
> +			if (px > smoke->width - 1.5)
> +				px = smoke->width - 1.5;
> +			if (py > smoke->height - 1.5)
> +				py = smoke->height - 1.5;
>  			i = (int) px;
>  			j = (int) py;
>  			fx = px - i;

Looks good to me, pushed.


Thanks,
pq


More information about the wayland-devel mailing list