[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56982] trunk/blender/source/blender/ editors/interface: Fix stack corruptions in special cases

Sergey Sharybin sergey.vfx at gmail.com
Thu May 23 20:19:50 CEST 2013


Revision: 56982
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56982
Author:   nazgul
Date:     2013-05-23 18:19:50 +0000 (Thu, 23 May 2013)
Log Message:
-----------
Fix stack corruptions in special cases

Issue was caused by wrong array length used
for result of name_uiprefix_id, which shall
actually be 1 byte bugger than MAX_ID_NAME.

Reported by Sebastian Koenig in IRC.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_layout.c
    trunk/blender/source/blender/editors/interface/interface_templates.c

Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c	2013-05-23 18:01:43 UTC (rev 56981)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c	2013-05-23 18:19:50 UTC (rev 56982)
@@ -1357,6 +1357,7 @@
 			char name_ui[MAX_ID_NAME];
 
 #if 0       /* this name is used for a string comparison and can't be modified, TODO */
+			/* if ever enabled, make name_ui be MAX_ID_NAME+1 */
 			name_uiprefix_id(name_ui, id);
 #else
 			BLI_strncpy(name_ui, id->name + 2, sizeof(name_ui));

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2013-05-23 18:01:43 UTC (rev 56981)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2013-05-23 18:19:50 UTC (rev 56982)
@@ -151,7 +151,10 @@
 					continue;
 
 			if (BLI_strcasestr(id->name + 2, str)) {
-				char name_ui[MAX_ID_NAME];
+				/* +1 is needed because name_uiprefix_id used 3 letter prefix
+				 * followed by ID_NAME-2 characters from id->name
+				 */
+				char name_ui[MAX_ID_NAME + 1];
 				name_uiprefix_id(name_ui, id);
 
 				iconid = ui_id_icon_get((bContext *)C, id, template->preview);




More information about the Bf-blender-cvs mailing list