[Bf-blender-cvs] [8d064c5bc4c] blender2.8: Fix use-after free in DRW_shader_create_with_lib
Campbell Barton
noreply at git.blender.org
Wed Jan 17 09:18:58 CET 2018
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);
More information about the Bf-blender-cvs
mailing list