[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41125] trunk/blender/source: strcpy() --> BLI_strncpy(), where source strings are not fixed and target size is known .

Campbell Barton ideasman42 at gmail.com
Thu Oct 20 01:10:55 CEST 2011


Revision: 41125
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41125
Author:   campbellbarton
Date:     2011-10-19 23:10:54 +0000 (Wed, 19 Oct 2011)
Log Message:
-----------
strcpy() --> BLI_strncpy(), where source strings are not fixed and target size is known.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_packedFile.h
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/blenkernel/intern/packedFile.c
    trunk/blender/source/blender/blenkernel/intern/pointcache.c
    trunk/blender/source/blender/blenkernel/intern/property.c
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/blenkernel/intern/sound.c
    trunk/blender/source/blender/blenkernel/intern/texture.c
    trunk/blender/source/blender/blenlib/intern/fileops.c
    trunk/blender/source/blender/blenlib/intern/freetypefont.c
    trunk/blender/source/blender/blenlib/intern/storage.c
    trunk/blender/source/blender/blenloader/BLO_readfile.h
    trunk/blender/source/blender/blenloader/BLO_runtime.h
    trunk/blender/source/blender/blenloader/intern/readblenentry.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/runtime.c
    trunk/blender/source/blender/collada/AnimationImporter.cpp
    trunk/blender/source/blender/editors/armature/editarmature.c
    trunk/blender/source/blender/editors/armature/poselib.c
    trunk/blender/source/blender/editors/gpencil/editaction_gpencil.c
    trunk/blender/source/blender/editors/interface/resources.c
    trunk/blender/source/blender/editors/object/object_constraint.c
    trunk/blender/source/blender/editors/object/object_relations.c
    trunk/blender/source/blender/editors/object/object_vgroup.c
    trunk/blender/source/blender/editors/render/render_preview.c
    trunk/blender/source/blender/editors/screen/screendump.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
    trunk/blender/source/blender/editors/sculpt_paint/sculpt_undo.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    trunk/blender/source/blender/imbuf/intern/anim_movie.c
    trunk/blender/source/blender/makesrna/intern/rna_lattice.c
    trunk/blender/source/blender/makesrna/intern/rna_object_force.c
    trunk/blender/source/blender/modifiers/intern/MOD_solidify.c
    trunk/blender/source/blender/nodes/intern/node_common.c
    trunk/blender/source/blender/render/intern/source/renderdatabase.c
    trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp

Modified: trunk/blender/source/blender/blenkernel/BKE_packedFile.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_packedFile.h	2011-10-19 23:04:48 UTC (rev 41124)
+++ trunk/blender/source/blender/blenkernel/BKE_packedFile.h	2011-10-19 23:10:54 UTC (rev 41125)
@@ -51,7 +51,7 @@
 void packAll(struct Main *bmain, struct ReportList *reports);
 
 /* unpack */
-char *unpackFile(struct ReportList *reports, char *abs_name, char *local_name, struct PackedFile *pf, int how);
+char *unpackFile(struct ReportList *reports, const char *abs_name, const char *local_name, struct PackedFile *pf, int how);
 int unpackVFont(struct ReportList *reports, struct VFont *vfont, int how);
 int unpackSound(struct Main *bmain, struct ReportList *reports, struct bSound *sound, int how);
 int unpackImage(struct ReportList *reports, struct Image *ima, int how);

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c	2011-10-19 23:04:48 UTC (rev 41124)
+++ trunk/blender/source/blender/blenkernel/intern/image.c	2011-10-19 23:10:54 UTC (rev 41125)
@@ -906,8 +906,8 @@
 	
 	if (scene->r.stamp & R_STAMP_MARKER) {
 		char *name = scene_find_last_marker_name(scene, CFRA);
-	
-		if (name)	strcpy(text, name);
+
+		if (name)	BLI_strncpy(text, name, sizeof(text));
 		else 		strcpy(text, "<none>");
 
 		BLI_snprintf(stamp_data->marker, sizeof(stamp_data->marker), do_prefix ? "Marker %s":"%s", text);
@@ -980,7 +980,7 @@
 	if (scene->r.stamp & R_STAMP_SEQSTRIP) {
 		Sequence *seq= seq_foreground_frame_get(scene, scene->r.cfra);
 	
-		if (seq) strcpy(text, seq->name+2);
+		if (seq)	BLI_strncpy(text, seq->name+2, sizeof(text));
 		else 		strcpy(text, "<none>");
 
 		BLI_snprintf(stamp_data->strip, sizeof(stamp_data->strip), do_prefix ? "Strip %s":"%s", text);

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2011-10-19 23:04:48 UTC (rev 41124)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2011-10-19 23:10:54 UTC (rev 41125)
@@ -86,8 +86,8 @@
 	ModifierTypeInfo *mti = modifierType_getInfo(type);
 	ModifierData *md = MEM_callocN(mti->structSize, mti->structName);
 	
-	// FIXME: we need to make the name always be unique somehow...
-	strcpy(md->name, mti->name);
+	/* note, this name must be made unique later */
+	BLI_strncpy(md->name, mti->name, sizeof(md->name));
 
 	md->type = type;
 	md->mode = eModifierMode_Realtime

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c	2011-10-19 23:04:48 UTC (rev 41124)
+++ trunk/blender/source/blender/blenkernel/intern/node.c	2011-10-19 23:10:54 UTC (rev 41125)
@@ -374,7 +374,7 @@
 		/*node->typeinfo= MEM_dupallocN(ntype);*/
 		bNodeType *newtype= MEM_callocN(sizeof(bNodeType), "dynamic bNodeType");
 		*newtype= *ntype;
-		strcpy(newtype->name, ntype->name);
+		BLI_strncpy(newtype->name, ntype->name, sizeof(newtype->name));
 		node->typeinfo= newtype;
 	}
 }

Modified: trunk/blender/source/blender/blenkernel/intern/packedFile.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/packedFile.c	2011-10-19 23:04:48 UTC (rev 41124)
+++ trunk/blender/source/blender/blenkernel/intern/packedFile.c	2011-10-19 23:10:54 UTC (rev 41125)
@@ -182,7 +182,7 @@
 	
 	// convert relative filenames to absolute filenames
 	
-	strcpy(name, filename);
+	BLI_strncpy(name, filename, sizeof(name));
 	BLI_path_abs(name, basepath);
 	
 	// open the file
@@ -240,7 +240,7 @@
 }
 
 
-/*
+#if 0
 
 // attempt to create a function that generates an unique filename
 // this will work when all funtions in fileops.c understand relative filenames...
@@ -249,6 +249,7 @@
 {
 	char tempname[FILE_MAXDIR + FILE_MAXFILE];
 	char *newname;
+	size_t len;
 	
 	if (fop_exists(name)) {
 		for (number = 1; number <= 999; number++) {
@@ -258,14 +259,12 @@
 			}
 		}
 	}
-	
-	newname = mallocN(strlen(tempname) + 1, "find_new_name");
-	strcpy(newname, tempname);
-	
-	return(newname);
+	len= strlen(tempname) + 1;
+	newname = MEM_mallocN(len, "find_new_name");
+	memcpy(newname, tempname, len * sizeof(char));
+	return newname;
 }
-	
-*/
+#endif
 
 int writePackedFile(ReportList *reports, const char *filename, PackedFile *pf, int guimode)
 {
@@ -277,12 +276,12 @@
 	
 	if (guimode) {} //XXX  waitcursor(1);
 	
-	strcpy(name, filename);
+	BLI_strncpy(name, filename, sizeof(name));
 	BLI_path_abs(name, G.main->name);
 	
 	if (BLI_exists(name)) {
 		for (number = 1; number <= 999; number++) {
-			sprintf(tempname, "%s.%03d_", name, number);
+			BLI_snprintf(tempname, sizeof(tempname), "%s.%03d_", name, number);
 			if (! BLI_exists(tempname)) {
 				if (BLI_copy_fileops(name, tempname) == RET_OK) {
 					remove_tmp = TRUE;
@@ -342,7 +341,7 @@
 	char buf[4096];
 	char name[FILE_MAXDIR + FILE_MAXFILE];
 	
-	strcpy(name, filename);
+	BLI_strncpy(name, filename, sizeof(name));
 	BLI_path_abs(name, G.main->name);
 	
 	if (stat(name, &st)) {
@@ -392,9 +391,10 @@
 
 */
 
-char *unpackFile(ReportList *reports, char *abs_name, char *local_name, PackedFile *pf, int how)
+char *unpackFile(ReportList *reports, const char *abs_name, const char *local_name, PackedFile *pf, int how)
 {
-	char *newname = NULL, *temp = NULL;
+	char *newname = NULL;
+	const char *temp = NULL;
 	
 	// char newabs[FILE_MAXDIR + FILE_MAXFILE];
 	// char newlocal[FILE_MAXDIR + FILE_MAXFILE];
@@ -437,12 +437,11 @@
 		}
 		
 		if (temp) {
-			newname = MEM_mallocN(strlen(temp) + 1, "unpack_file newname");
-			strcpy(newname, temp);
+			newname= BLI_strdup(temp);
 		}
 	}
 	
-	return (newname);
+	return newname;
 }
 
 
@@ -453,17 +452,17 @@
 	int ret_value = RET_ERROR;
 	
 	if (vfont != NULL) {
-		strcpy(localname, vfont->name);
+		BLI_strncpy(localname, vfont->name, sizeof(localname));
 		BLI_splitdirstring(localname, fi);
 		
-		sprintf(localname, "//fonts/%s", fi);
+		BLI_snprintf(localname, sizeof(localname), "//fonts/%s", fi);
 		
 		newname = unpackFile(reports, vfont->name, localname, vfont->packedfile, how);
 		if (newname != NULL) {
 			ret_value = RET_OK;
 			freePackedFile(vfont->packedfile);
 			vfont->packedfile = NULL;
-			strcpy(vfont->name, newname);
+			BLI_strncpy(vfont->name, newname, sizeof(vfont->name));
 			MEM_freeN(newname);
 		}
 	}
@@ -478,13 +477,13 @@
 	int ret_value = RET_ERROR;
 
 	if (sound != NULL) {
-		strcpy(localname, sound->name);
+		BLI_strncpy(localname, sound->name, sizeof(localname));
 		BLI_splitdirstring(localname, fi);
-		sprintf(localname, "//sounds/%s", fi);
+		BLI_snprintf(localname, sizeof(localname), "//sounds/%s", fi);
 
 		newname = unpackFile(reports, sound->name, localname, sound->packedfile, how);
 		if (newname != NULL) {
-			strcpy(sound->name, newname);
+			BLI_strncpy(sound->name, newname, sizeof(sound->name));
 			MEM_freeN(newname);
 
 			freePackedFile(sound->packedfile);
@@ -506,16 +505,16 @@
 	int ret_value = RET_ERROR;
 	
 	if (ima != NULL) {
-		strcpy(localname, ima->name);
+		BLI_strncpy(localname, ima->name, sizeof(localname));
 		BLI_splitdirstring(localname, fi);
-		sprintf(localname, "//textures/%s", fi);
-			
+		BLI_snprintf(localname, sizeof(localname), "//textures/%s", fi);
+
 		newname = unpackFile(reports, ima->name, localname, ima->packedfile, how);
 		if (newname != NULL) {
 			ret_value = RET_OK;
 			freePackedFile(ima->packedfile);
 			ima->packedfile = NULL;
-			strcpy(ima->name, newname);
+			BLI_strncpy(ima->name, newname, sizeof(ima->name));
 			MEM_freeN(newname);
 			BKE_image_signal(ima, NULL, IMA_SIGNAL_RELOAD);
 		}

Modified: trunk/blender/source/blender/blenkernel/intern/pointcache.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pointcache.c	2011-10-19 23:04:48 UTC (rev 41124)
+++ trunk/blender/source/blender/blenkernel/intern/pointcache.c	2011-10-19 23:10:54 UTC (rev 41125)
@@ -2891,24 +2891,24 @@
 	char ext[MAX_PTCACHE_PATH];
 
 	/* save old name */
-	strcpy(old_name, pid->cache->name);
+	BLI_strncpy(old_name, pid->cache->name, sizeof(old_name));
 
 	/* get "from" filename */
-	strcpy(pid->cache->name, from);
+	BLI_strncpy(pid->cache->name, from, sizeof(pid->cache->name));
 
 	len = ptcache_filename(pid, old_filename, 0, 0, 0); /* no path */
 
 	ptcache_path(pid, path);
 	dir = opendir(path);
 	if(dir==NULL) {
-		strcpy(pid->cache->name, old_name);
+		BLI_strncpy(pid->cache->name, old_name, sizeof(pid->cache->name));
 		return;
 	}
 
 	BLI_snprintf(ext, sizeof(ext), "_%02u"PTCACHE_EXT, pid->stack_index);
 
 	/* put new name into cache */
-	strcpy(pid->cache->name, to);
+	BLI_strncpy(pid->cache->name, to, sizeof(pid->cache->name));
 
 	while ((de = readdir(dir)) != NULL) {
 		if (strstr(de->d_name, ext)) { /* do we have the right extension?*/
@@ -2963,7 +2963,7 @@
 	if(cache->index >= 0)
 		BLI_snprintf(ext, sizeof(ext), "_%02d"PTCACHE_EXT, cache->index);
 	else
-		strcpy(ext, PTCACHE_EXT);
+		BLI_strncpy(ext, PTCACHE_EXT, sizeof(ext));
 	
 	while ((de = readdir(dir)) != NULL) {
 		if (strstr(de->d_name, ext)) { /* do we have the right extension?*/

Modified: trunk/blender/source/blender/blenkernel/intern/property.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/property.c	2011-10-19 23:04:48 UTC (rev 41124)
+++ trunk/blender/source/blender/blenkernel/intern/property.c	2011-10-19 23:10:54 UTC (rev 41125)
@@ -166,7 +166,7 @@
 			int i= 0;
 
 			/* strip numbers */
-			strcpy(base_name, prop->name);
+			BLI_strncpy(base_name, prop->name, sizeof(base_name));
 			for(i= strlen(base_name)-1; (i>=0 && isdigit(base_name[i])); i--) {
 				base_name[i]= '\0';
 			}
@@ -178,7 +178,7 @@
 				strcat(new_name, num);
 			} while(get_property__internal(first, prop, new_name));
 
-			strcpy(prop->name, new_name);
+			BLI_strncpy(prop->name, new_name, sizeof(prop->name));
 		}
 	}
 }
@@ -257,7 +257,7 @@
 		*((float *)&prop->data)= (float)atof(str);
 		break;
 	case GPROP_STRING:
-		strcpy(prop->poin, str);
+		strcpy(prop->poin, str); /* TODO - check size? */
 		break;
 	}
 	

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list