[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34810] trunk/blender/source: enforce string limits ( reported by pedantic checking tools & some developers).
Campbell Barton
ideasman42 at gmail.com
Sun Feb 13 04:21:44 CET 2011
Revision: 34810
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34810
Author: campbellbarton
Date: 2011-02-13 03:21:27 +0000 (Sun, 13 Feb 2011)
Log Message:
-----------
enforce string limits (reported by pedantic checking tools & some developers).
mostly replace strcpy with BLI_strncpy and multiple strcat's with a BLI_snprintf().
also fix possible crash if CWD isnt available.
Modified Paths:
--------------
trunk/blender/source/blender/blenfont/intern/blf_dir.c
trunk/blender/source/blender/blenfont/intern/blf_lang.c
trunk/blender/source/blender/blenkernel/BKE_armature.h
trunk/blender/source/blender/blenkernel/intern/armature.c
trunk/blender/source/blender/blenkernel/intern/blender.c
trunk/blender/source/blender/blenkernel/intern/boids.c
trunk/blender/source/blender/blenkernel/intern/constraint.c
trunk/blender/source/blender/blenkernel/intern/deform.c
trunk/blender/source/blender/blenkernel/intern/exotic.c
trunk/blender/source/blender/blenkernel/intern/font.c
trunk/blender/source/blender/blenkernel/intern/idprop.c
trunk/blender/source/blender/blenkernel/intern/object.c
trunk/blender/source/blender/blenkernel/intern/pointcache.c
trunk/blender/source/blender/blenkernel/intern/sequencer.c
trunk/blender/source/blender/blenlib/BLI_path_util.h
trunk/blender/source/blender/blenlib/intern/bpath.c
trunk/blender/source/blender/blenlib/intern/path_util.c
trunk/blender/source/blender/blenlib/intern/storage.c
trunk/blender/source/blender/blenloader/BLO_writefile.h
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/blenloader/intern/writefile.c
trunk/blender/source/blender/collada/DocumentImporter.cpp
trunk/blender/source/blender/editors/armature/editarmature.c
trunk/blender/source/blender/editors/interface/interface.c
trunk/blender/source/blender/editors/interface/interface_draw.c
trunk/blender/source/blender/editors/interface/interface_handlers.c
trunk/blender/source/blender/editors/interface/resources.c
trunk/blender/source/blender/editors/mesh/editmesh_loop.c
trunk/blender/source/blender/editors/physics/physics_fluid.c
trunk/blender/source/blender/editors/space_file/file_ops.c
trunk/blender/source/blender/editors/space_file/filesel.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/makesdna/DNA_armature_types.h
trunk/blender/source/blender/makesrna/intern/rna_sequencer.c
trunk/blender/source/blender/makesrna/intern/rna_userdef.c
trunk/blender/source/blender/modifiers/intern/MOD_collision.c
trunk/blender/source/blender/modifiers/intern/MOD_explode.c
trunk/blender/source/blender/modifiers/intern/MOD_fluidsim_util.c
trunk/blender/source/blender/modifiers/intern/MOD_mask.c
trunk/blender/source/blender/modifiers/intern/MOD_screw.c
trunk/blender/source/blender/modifiers/intern/MOD_shapekey.c
trunk/blender/source/blender/modifiers/intern/MOD_shrinkwrap.c
trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c
trunk/blender/source/blender/modifiers/intern/MOD_surface.c
trunk/blender/source/blender/python/generic/IDProp.c
trunk/blender/source/blender/render/intern/source/pipeline.c
trunk/blender/source/blender/windowmanager/intern/wm_files.c
trunk/blender/source/creator/creator.c
Modified: trunk/blender/source/blender/blenfont/intern/blf_dir.c
===================================================================
--- trunk/blender/source/blender/blenfont/intern/blf_dir.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenfont/intern/blf_dir.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -125,20 +125,16 @@
{
DirBLF *dir;
char full_path[FILE_MAXDIR+FILE_MAXFILE];
- char *s;
-
- dir= global_font_dir.first;
- s= NULL;
- while (dir) {
- BLI_join_dirfile(full_path, dir->path, file);
+ char *s= NULL;
+
+ for(dir=global_font_dir.first; dir; dir= dir->next) {
+ BLI_join_dirfile(full_path, sizeof(full_path), dir->path, file);
if (BLI_exist(full_path)) {
- s= (char *)MEM_mallocN(strlen(full_path)+1,"blf_dir_search");
- strcpy(s, full_path);
+ s= BLI_strdup(full_path);
break;
}
- dir= dir->next;
}
-
+
if (!s) {
/* check the current directory, why not ? */
if (BLI_exist(file))
Modified: trunk/blender/source/blender/blenfont/intern/blf_lang.c
===================================================================
--- trunk/blender/source/blender/blenfont/intern/blf_lang.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenfont/intern/blf_lang.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -38,11 +38,11 @@
#include "DNA_listBase.h"
#include "DNA_vec_types.h"
+#include "MEM_guardedalloc.h"
-
-#include "BLI_blenlib.h"
#include "BLI_linklist.h" /* linknode */
#include "BLI_string.h"
+#include "BLI_path_util.h"
#ifdef __APPLE__
@@ -79,20 +79,14 @@
#else
char *locreturn= setlocale(LC_ALL, str);
if (locreturn == NULL) {
- char *lang;
+ char *lang= BLI_sprintfN("%s.UTF-8", str);
- lang= (char*)malloc(sizeof(char)*(strlen(str)+7));
-
- lang[0]= '\0';
- strcat(lang, str);
- strcat(lang, ".UTF-8");
-
locreturn= setlocale(LC_ALL, lang);
if (locreturn == NULL) {
printf("could not change language to %s nor %s\n", str, lang);
}
- free(lang);
+ MEM_freeN(lang);
}
setlocale(LC_NUMERIC, "C");
@@ -100,12 +94,12 @@
textdomain(DOMAIN_NAME);
bindtextdomain(DOMAIN_NAME, global_messagepath);
/* bind_textdomain_codeset(DOMAIN_NAME, global_encoding_name); */
- strcpy(global_language, str);
+ BLI_strncpy(global_language, str, sizeof(global_language));
}
void BLF_lang_encoding(const char *str)
{
- strcpy(global_encoding_name, str);
+ BLI_strncpy(global_encoding_name, str, sizeof(global_encoding_name));
/* bind_textdomain_codeset(DOMAIN_NAME, encoding_name); */
}
@@ -116,7 +110,7 @@
return;
}
-void BLF_lang_encoding(char *str)
+void BLF_lang_encoding(const char *str)
{
(void)str;
return;
Modified: trunk/blender/source/blender/blenkernel/BKE_armature.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_armature.h 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenkernel/BKE_armature.h 2011-02-13 03:21:27 UTC (rev 34810)
@@ -80,7 +80,7 @@
void make_local_armature(struct bArmature *arm);
struct bArmature *copy_armature(struct bArmature *arm);
-int bone_autoside_name (char *name, int strip_number, short axis, float head, float tail);
+int bone_autoside_name (char name[32], int strip_number, short axis, float head, float tail);
struct Bone *get_named_bone (struct bArmature *arm, const char *name);
Modified: trunk/blender/source/blender/blenkernel/intern/armature.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/armature.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenkernel/intern/armature.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -248,16 +248,15 @@
}
/* Finds the best possible extension to the name on a particular axis. (For renaming, check for unique names afterwards)
- * This assumes that bone names are at most 32 chars long!
* strip_number: removes number extensions (TODO: not used)
* axis: the axis to name on
* head/tail: the head/tail co-ordinate of the bone on the specified axis
*/
-int bone_autoside_name (char *name, int UNUSED(strip_number), short axis, float head, float tail)
+int bone_autoside_name (char name[MAXBONENAME], int UNUSED(strip_number), short axis, float head, float tail)
{
unsigned int len;
- char basename[32]={""};
- char extension[5]={""};
+ char basename[MAXBONENAME]= "";
+ char extension[5]= "";
len= strlen(name);
if (len == 0) return 0;
@@ -350,13 +349,13 @@
}
}
}
-
- if ((32 - len) < strlen(extension) + 1) { /* add 1 for the '.' */
+
+ if ((MAXBONENAME - len) < strlen(extension) + 1) { /* add 1 for the '.' */
strncpy(name, basename, len-strlen(extension));
}
-
- sprintf(name, "%s.%s", basename, extension);
-
+
+ BLI_snprintf(name, MAXBONENAME, "%s.%s", basename, extension);
+
return 1;
}
Modified: trunk/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/blender.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenkernel/intern/blender.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -457,7 +457,7 @@
success= BKE_read_file_from_memfile(C, &uel->memfile, NULL);
/* restore */
- strcpy(G.main->name, mainstr); /* restore */
+ BLI_strncpy(G.main->name, mainstr, sizeof(G.main->name)); /* restore */
G.fileflags= fileflags;
if(success) {
@@ -525,7 +525,7 @@
success= BLO_write_file(CTX_data_main(C), tstr, G.fileflags, NULL, NULL);
- strcpy(curundo->str, tstr);
+ BLI_strncpy(curundo->str, tstr, sizeof(curundo->str));
}
else {
MemFile *prevfile=NULL;
Modified: trunk/blender/source/blender/blenkernel/intern/boids.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/boids.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenkernel/intern/boids.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -1470,7 +1470,7 @@
rule->type = type;
rule->flag |= BOIDRULE_IN_AIR|BOIDRULE_ON_LAND;
- strcpy(rule->name, boidrule_type_items[type-1].name);
+ BLI_strncpy(rule->name, boidrule_type_items[type-1].name, sizeof(rule->name));
return rule;
}
Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/constraint.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenkernel/intern/constraint.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -752,7 +752,7 @@
bConstraintTarget *ctn = ct->next; \
if (nocopy == 0) { \
datatar= ct->tar; \
- strcpy(datasubtarget, ct->subtarget); \
+ BLI_strncpy(datasubtarget, ct->subtarget, sizeof(datasubtarget)); \
con->tarspace= (char)ct->space; \
} \
\
Modified: trunk/blender/source/blender/blenkernel/intern/deform.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/deform.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenkernel/intern/deform.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -348,20 +348,20 @@
len= strlen(from_name);
if(len<3) return; // we don't do names like .R or .L
- strcpy(name, from_name);
+ BLI_strncpy(name, from_name, sizeof(name));
/* We first check the case with a .### extension, let's find the last period */
if(isdigit(name[len-1])) {
index= strrchr(name, '.'); // last occurrence
if (index && isdigit(index[1]) ) { // doesnt handle case bone.1abc2 correct..., whatever!
if(strip_number==0)
- strcpy(number, index);
+ BLI_strncpy(number, index, sizeof(number));
*index= 0;
len= strlen(name);
}
}
- strcpy (prefix, name);
+ BLI_strncpy(prefix, name, sizeof(prefix));
#define IS_SEPARATOR(a) ((a)=='.' || (a)==' ' || (a)=='-' || (a)=='_')
Modified: trunk/blender/source/blender/blenkernel/intern/exotic.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/exotic.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenkernel/intern/exotic.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -1652,7 +1652,7 @@
cent[2]= center[2];
dxf_get_mesh(scene, &me, &ob, noob);
- strcpy(oldllay, layname);
+ BLI_strncpy(oldllay, layname, sizeof(oldllay));
if(ob) VECCOPY(ob->loc, cent);
dxf_add_mat (ob, me, color, layname);
Modified: trunk/blender/source/blender/blenkernel/intern/font.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/font.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenkernel/intern/font.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -96,13 +96,14 @@
void
wcs2utf8s(char *dst, wchar_t *src)
{
- char ch[5];
+ /* NULL terminator not needed */
+ char ch[4];
while(*src)
{
- memset(ch, 0, 5);
+ memset(ch, 0, sizeof(ch));
chtoutf8(*src++, ch);
- strcat(dst, ch);
+ dst= strncat(dst, ch, sizeof(ch));
}
}
@@ -363,14 +364,14 @@
struct TmpFont *tmpfnt;
if (strcmp(name, FO_BUILTIN_NAME)==0) {
- strcpy(filename, name);
+ BLI_strncpy(filename, name, sizeof(filename));
pf= get_builtin_packedfile();
is_builtin= 1;
} else {
char dir[FILE_MAXDIR];
- strcpy(dir, name);
+ BLI_strncpy(dir, name, sizeof(dir));
BLI_splitdirstring(dir, filename);
pf= newPackedFile(NULL, name);
Modified: trunk/blender/source/blender/blenkernel/intern/idprop.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/idprop.c 2011-02-13 02:55:23 UTC (rev 34809)
+++ trunk/blender/source/blender/blenkernel/intern/idprop.c 2011-02-13 03:21:27 UTC (rev 34810)
@@ -711,9 +711,9 @@
prop->len = 1; /*NULL string, has len of 1 to account for null byte.*/
} else {
int stlen = strlen(st) + 1;
- prop->data.pointer = MEM_callocN(stlen, "id property string 2");
+ prop->data.pointer = MEM_mallocN(stlen, "id property string 2");
prop->len = prop->totallen = stlen;
- strcpy(prop->data.pointer, st);
+ memcpy(prop->data.pointer, st, stlen);
}
break;
}
Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c 2011-02-13 02:55:23 UTC (rev 34809)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list