[Mesa-dev] [PATCH] st/mesa: fix invalid pointer use in st_texture_get_sampler_view()

Michel Dänzer michel at daenzer.net
Sun Apr 20 19:34:57 PDT 2014


On 19.04.2014 03:35, Brian Paul wrote:
> The '**used' pointer was pointing into the stObj->sampler_views array.
> If 'free' was null, we'd realloc that array, thus making the 'used'
> pointer invalid.  This soon led to memory errors.
> 
> Just change the pointer to be '*used' so it points directly at the
> pipe_sampler_view.
> ---
>  src/mesa/state_tracker/st_texture.c |    6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/src/mesa/state_tracker/st_texture.c b/src/mesa/state_tracker/st_texture.c
> index f664ef5..92035e8 100644
> --- a/src/mesa/state_tracker/st_texture.c
> +++ b/src/mesa/state_tracker/st_texture.c
> @@ -443,7 +443,7 @@ struct pipe_sampler_view **
>  st_texture_get_sampler_view(struct st_context *st,
>                              struct st_texture_object *stObj)
>  {
> -   struct pipe_sampler_view **used = NULL, **free = NULL;
> +   struct pipe_sampler_view *used = NULL, **free = NULL;
>     GLuint i;
>  
>     for (i = 0; i < stObj->num_sampler_views; ++i) {
> @@ -455,7 +455,7 @@ st_texture_get_sampler_view(struct st_context *st,
>              return sv;
>  
>           /* Wasn't the right one, but remember it as template */
> -         used = sv;
> +         used = *sv;
>        } else {
>           /* Found a free slot, remember that */
>           free = sv;
> @@ -475,7 +475,7 @@ st_texture_get_sampler_view(struct st_context *st,
>  
>     /* Add just any sampler view to be used as a template */
>     if (used)
> -      pipe_sampler_view_reference(free, *used);
> +      pipe_sampler_view_reference(free, used);
>  
>     return free;
>  }
> 

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>


-- 
Earthling Michel Dänzer            |                  http://www.amd.com
Libre software enthusiast          |                Mesa and X developer


More information about the mesa-dev mailing list