[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