diff options
author | Dave Airlie <airlied@redhat.com> | 2017-02-28 14:52:09 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2017-02-28 14:52:09 +1000 |
commit | 737c3350850ca4dbc5633b3bdb4118176ce59920 (patch) | |
tree | 14c456705bf0202580ef8344aa8267646e98481c | |
parent | affd94f7e5f71f2a7e077719ba1ab15c6c188f2e (diff) |
renderer: fix memory leak in vertex elements state create
Reported-by: Li Qiang
Free the vertex array in error path.
This was introduced by this commit:
renderer: fix heap overflow in vertex elements state create.
I rewrote the code to not require the allocation in the first
place if we have an error, seems nicer.
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | src/vrend_renderer.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c index 1bca7ad..e5d9f5c 100644 --- a/src/vrend_renderer.c +++ b/src/vrend_renderer.c @@ -1648,18 +1648,19 @@ int vrend_create_vertex_elements_state(struct vrend_context *ctx, unsigned num_elements, const struct pipe_vertex_element *elements) { - struct vrend_vertex_element_array *v = CALLOC_STRUCT(vrend_vertex_element_array); + struct vrend_vertex_element_array *v; const struct util_format_description *desc; GLenum type; int i; uint32_t ret_handle; - if (!v) - return ENOMEM; - if (num_elements > PIPE_MAX_ATTRIBS) return EINVAL; + v = CALLOC_STRUCT(vrend_vertex_element_array); + if (!v) + return ENOMEM; + v->count = num_elements; for (i = 0; i < num_elements; i++) { memcpy(&v->elements[i].base, &elements[i], sizeof(struct pipe_vertex_element)); |