[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