Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2007-10-21 13:32:18 +0400
committerCampbell Barton <ideasman42@gmail.com>2007-10-21 13:32:18 +0400
commitbacfc9eb91f10871a2ba9c3b35e48c3895dffac3 (patch)
tree7332eb5683a36a60604f0ad31fbbd762f4c03aba /source/blender/blenlib
parent3a04520686c19074814c7de363f208459c69dfd1 (diff)
fix for crash's in file selector.
- on unix BLI_diskfree was only using 100 chars for the dir name, and not checking if the name given was longer, increased to FILE_MAXDIR (160) and added a check, return -1 if its too long. The file selector only allowed 80 chars to be typed into the directory entry. Made the file selector check that the path is less then FILE_MIXDIR, if you try and enter a path thats longer it will tell you that the path is too long, before it was writing into other memory and crashing.
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r--source/blender/blenlib/intern/storage.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c
index a6b91bf489d..1d46679cbf2 100644
--- a/source/blender/blenlib/intern/storage.c
+++ b/source/blender/blenlib/intern/storage.c
@@ -180,12 +180,15 @@ double BLI_diskfree(char *dir)
return (double) (freec*bytesps*sectorspc);
#else
struct statfs disk;
- char name[100],*slash;
-
-
+ char name[FILE_MAXDIR],*slash;
+ int len = strlen(dir);
+
+ if (len >= FILE_MAXDIR) /* path too long */
+ return -1;
+
strcpy(name,dir);
- if(strlen(name)){
+ if(len){
slash = strrchr(name,'/');
if (slash) slash[1] = 0;
} else strcpy(name,"/");