[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [10886] trunk/blender/source/blender/ blenkernel/intern/library.c: Fix possible segfault in blender.

Diego Borghetti (Plumiferos) bdiego at gmail.com
Wed Jun 6 17:11:17 CEST 2007


Revision: 10886
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=10886
Author:   bdiego
Date:     2007-06-06 17:11:16 +0200 (Wed, 06 Jun 2007)

Log Message:
-----------
Fix possible segfault in blender.

tname can be bigger of 21 character, in that case
strncpy don't put the final '\0' to the name this.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/library.c

Modified: trunk/blender/source/blender/blenkernel/intern/library.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/library.c	2007-06-06 08:21:34 UTC (rev 10885)
+++ trunk/blender/source/blender/blenkernel/intern/library.c	2007-06-06 15:11:16 UTC (rev 10886)
@@ -915,12 +915,17 @@
 	/* if no libdata given, look up based on ID */
 	if(lb==NULL) lb= wich_libbase(G.main, GS(id->name));
 
-	if(tname==0) 	/* if no name given, use name of current ID */
+	if(tname==0) {	/* if no name given, use name of current ID */
 		strncpy(name, id->name+2, 21);
-	else /* else make a copy (tname args can be const) */
+		result= strlen(id->name+2);
+	}
+	else { /* else make a copy (tname args can be const) */
 		strncpy(name, tname, 21);
+		result= strlen(tname);
+	}
 
-	if( strlen(name) > 21 ) name[21]= 0;
+	/* if result > 21, strncpy don't put the final '\0' to name. */
+	if( result > 21 ) name[21]= 0;
 
 	result = check_for_dupid( lb, id, name );
 	strcpy( id->name+2, name );





More information about the Bf-blender-cvs mailing list