[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31268] trunk/blender/source/blender: - possibly bugfix /w uninitialized vars [#23270] Long directory name segmentation fault in File brower.

Campbell Barton ideasman42 at gmail.com
Thu Aug 12 00:36:43 CEST 2010


Revision: 31268
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31268
Author:   campbellbarton
Date:     2010-08-12 00:36:43 +0200 (Thu, 12 Aug 2010)

Log Message:
-----------
- possibly bugfix /w uninitialized vars [#23270] Long directory name segmentation fault in File brower.
- in exceptional cases vertcos_to_key() could return with KeyBlock pointing to freed memory.
- invalid use of realloc() in BLI_builddir()

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/key.c
    trunk/blender/source/blender/blenlib/intern/storage.c
    trunk/blender/source/blender/imbuf/intern/thumbs.c
    trunk/blender/source/blender/python/doc/sphinx_doc_gen.py

Modified: trunk/blender/source/blender/blenkernel/intern/key.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/key.c	2010-08-11 21:51:31 UTC (rev 31267)
+++ trunk/blender/source/blender/blenkernel/intern/key.c	2010-08-11 22:36:43 UTC (rev 31268)
@@ -1850,10 +1850,13 @@
 		tot= count_curveverts(&cu->nurb);
 	}
 
+	if (tot == 0) {
+		kb->data= NULL;
+		return;
+	}
+
 	fp= kb->data= MEM_callocN(tot*elemsize, "key_to_vertcos vertCos");
 
-	if (tot == 0) return;
-
 	/* Copy coords to keyblock */
 
 	if(ELEM(ob->type, OB_MESH, OB_LATTICE)) {

Modified: trunk/blender/source/blender/blenlib/intern/storage.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/storage.c	2010-08-11 21:51:31 UTC (rev 31267)
+++ trunk/blender/source/blender/blenlib/intern/storage.c	2010-08-11 22:36:43 UTC (rev 31268)
@@ -237,8 +237,19 @@
 		
 		if (newnum){
 
-			if (files) files=(struct direntry *)realloc(files,(totnum+newnum) * sizeof(struct direntry));
-			else files=(struct direntry *)malloc(newnum * sizeof(struct direntry));
+			if(files) {
+				void *tmp= realloc(files, (totnum+newnum) * sizeof(struct direntry));
+				if(tmp) {
+					files= (struct direntry *)tmp;
+				}
+				else { /* realloc fail */
+					free(files);
+					files= NULL;
+				}
+			}
+			
+			if(files==NULL)
+				files=(struct direntry *)malloc(newnum * sizeof(struct direntry));
 
 			if (files){
 				dlink = (struct dirlink *) dirbase->first;

Modified: trunk/blender/source/blender/imbuf/intern/thumbs.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/thumbs.c	2010-08-11 21:51:31 UTC (rev 31267)
+++ trunk/blender/source/blender/imbuf/intern/thumbs.c	2010-08-11 22:36:43 UTC (rev 31268)
@@ -248,8 +248,8 @@
 	char tdir[FILE_MAX];
 	char temp[FILE_MAX];
 	char mtime[40]= "0"; /* incase we can't stat the file */
-	char cwidth[40];
-	char cheight[40];
+	char cwidth[40]= "0"; /* incase images have no data */
+	char cheight[40]= "0";
 	char thumb[40];
 	short tsize = 128;
 	short ex, ey;

Modified: trunk/blender/source/blender/python/doc/sphinx_doc_gen.py
===================================================================
--- trunk/blender/source/blender/python/doc/sphinx_doc_gen.py	2010-08-11 21:51:31 UTC (rev 31267)
+++ trunk/blender/source/blender/python/doc/sphinx_doc_gen.py	2010-08-11 22:36:43 UTC (rev 31268)
@@ -269,11 +269,11 @@
         descr_items = [(key, descr) for key, descr in sorted(value.__dict__.items()) if not key.startswith("__")]
 
         for key, descr in descr_items:
-            if type(descr) == ClassMethodDescriptorType: # GetSetDescriptorType's are not documented yet
+            if type(descr) == ClassMethodDescriptorType:
                 py_descr2sphinx("   ", fw, descr, module_name, type_name, key)
 
         for key, descr in descr_items:
-            if type(descr) == MethodDescriptorType: # GetSetDescriptorType's are not documented yet
+            if type(descr) == MethodDescriptorType:
                 py_descr2sphinx("   ", fw, descr, module_name, type_name, key)
 
         for key, descr in descr_items:





More information about the Bf-blender-cvs mailing list