* gnu/packages/patches/virglrenderer-CVE-2017-6386.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/spice.scm (virglrenderer)[source]: Use it.
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Fix CVE-2017-6386 (memory leak introduced by fix for CVE-2017-5994).
 | |
| 
 | |
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5994
 | |
| 
 | |
| Patch copied from upstream source repository:
 | |
| 
 | |
| https://cgit.freedesktop.org/virglrenderer/commit/?id=737c3350850ca4dbc5633b3bdb4118176ce59920
 | |
| 
 | |
| From 737c3350850ca4dbc5633b3bdb4118176ce59920 Mon Sep 17 00:00:00 2001
 | |
| From: Dave Airlie <airlied@redhat.com>
 | |
| Date: Tue, 28 Feb 2017 14:52:09 +1000
 | |
| Subject: 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>
 | |
| 
 | |
| 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));
 | |
| -- 
 | |
| cgit v0.10.2
 | |
| 
 |