[Bf-blender-cvs] [73ac72fa89a] blender2.8: DRW: Fix crash when new shader requires 0 customdata layers

Clément Foucault noreply at git.blender.org
Wed Sep 19 20:02:21 CEST 2018


Commit: 73ac72fa89a2a54d18b806cc4f28392c954ee13e
Author: Clément Foucault
Date:   Wed Sep 19 20:02:03 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB73ac72fa89a2a54d18b806cc4f28392c954ee13e

DRW: Fix crash when new shader requires 0 customdata layers

It was using last cache->auto_layer_len which led to a buffer overflow.

===================================================================

M	source/blender/draw/intern/draw_cache_impl_mesh.c

===================================================================

diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index fe24ad707c1..513a7372ad4 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -1927,6 +1927,7 @@ static GPUVertBuf *mesh_batch_cache_get_tri_shading_data(MeshRenderData *rdata,
 		const uint tangent_len = rdata->cd.layers.tangent_len;
 		const uint vcol_len = rdata->cd.layers.vcol_len;
 		const uint layers_combined_len = uv_len + vcol_len + tangent_len;
+		cache->auto_layer_len = 0;
 
 		if (layers_combined_len == 0) {
 			return NULL;
@@ -1951,7 +1952,6 @@ static GPUVertBuf *mesh_batch_cache_get_tri_shading_data(MeshRenderData *rdata,
 		uint auto_names_len = 0;
 		uint auto_ofs = 0;
 		uint auto_id = 0;
-		cache->auto_layer_len = 0;
 		for (uint i = 0; i < uv_len; i++) {
 			const char *attrib_name = mesh_render_data_uv_auto_layer_uuid_get(rdata, i);
 			auto_names_len += strlen(attrib_name) + 2; /* include null terminator and b prefix. */



More information about the Bf-blender-cvs mailing list