Commit: 8d064c5bc4cd0fb5577c58ba6f15d0040774354a Author: Campbell Barton Date: Wed Jan 17 19:28:15 2018 +1100 Branches: blender2.8 https://developer.blender.org/rB8d064c5bc4cd0fb5577c58ba6f15d0040774354a
Fix use-after free in DRW_shader_create_with_lib Limit scope to avoid future accidents =================================================================== M source/blender/draw/intern/draw_manager.c =================================================================== diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index e2dc36deed4..1bbefe61b22 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -585,26 +585,30 @@ GPUShader *DRW_shader_create_with_lib( char *geom_with_lib = NULL; va_list args; - DynStr *ds_vert = BLI_dynstr_new(); - va_start(args, defines); - BLI_dynstr_append(ds_vert, va_arg(args, char *)); - va_end(args); - BLI_dynstr_append(ds_vert, vert); - vert_with_lib = BLI_dynstr_get_cstring(ds_vert); - BLI_dynstr_free(ds_vert); - - DynStr *ds_frag = BLI_dynstr_new(); - va_start(args, defines); - BLI_dynstr_append(ds_vert, va_arg(args, char *)); - va_end(args); - BLI_dynstr_append(ds_frag, frag); - frag_with_lib = BLI_dynstr_get_cstring(ds_frag); - BLI_dynstr_free(ds_frag); + { + DynStr *ds_vert = BLI_dynstr_new(); + va_start(args, defines); + BLI_dynstr_append(ds_vert, va_arg(args, char *)); + va_end(args); + BLI_dynstr_append(ds_vert, vert); + vert_with_lib = BLI_dynstr_get_cstring(ds_vert); + BLI_dynstr_free(ds_vert); + } + + { + DynStr *ds_frag = BLI_dynstr_new(); + va_start(args, defines); + BLI_dynstr_append(ds_frag, va_arg(args, char *)); + va_end(args); + BLI_dynstr_append(ds_frag, frag); + frag_with_lib = BLI_dynstr_get_cstring(ds_frag); + BLI_dynstr_free(ds_frag); + } if (geom) { DynStr *ds_geom = BLI_dynstr_new(); va_start(args, defines); - BLI_dynstr_append(ds_vert, va_arg(args, char *)); + BLI_dynstr_append(ds_geom, va_arg(args, char *)); va_end(args); BLI_dynstr_append(ds_geom, geom); geom_with_lib = BLI_dynstr_get_cstring(ds_geom); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs