[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55342] trunk/blender/source/blender/ editors/space_file/fsmenu.c: fix for buffer overrun in reading bookmarks when a line was over 256 bytes .

Campbell Barton ideasman42 at gmail.com
Sat Mar 16 18:33:17 CET 2013


Revision: 55342
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55342
Author:   campbellbarton
Date:     2013-03-16 17:33:16 +0000 (Sat, 16 Mar 2013)
Log Message:
-----------
fix for buffer overrun in reading bookmarks when a line was over 256 bytes.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_file/fsmenu.c

Modified: trunk/blender/source/blender/editors/space_file/fsmenu.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/fsmenu.c	2013-03-16 17:12:39 UTC (rev 55341)
+++ trunk/blender/source/blender/editors/space_file/fsmenu.c	2013-03-16 17:33:16 UTC (rev 55342)
@@ -281,14 +281,14 @@
 
 void fsmenu_read_bookmarks(struct FSMenu *fsmenu, const char *filename)
 {
-	char line[256];
+	char line[FILE_MAXDIR];
 	FSMenuCategory category = FS_CATEGORY_BOOKMARKS;
 	FILE *fp;
 
 	fp = BLI_fopen(filename, "r");
 	if (!fp) return;
 
-	while (fgets(line, 256, fp) != NULL) {       /* read a line */
+	while (fgets(line, sizeof(line), fp) != NULL) {       /* read a line */
 		if (strncmp(line, "[Bookmarks]", 11) == 0) {
 			category = FS_CATEGORY_BOOKMARKS;
 		}
@@ -318,7 +318,7 @@
 
 void fsmenu_read_system(struct FSMenu *fsmenu, int read_bookmarks)
 {
-	char line[256];
+	char line[FILE_MAXDIR];
 #ifdef WIN32
 	/* Add the drive names to the listing */
 	{
@@ -376,25 +376,25 @@
 		 * TODO : replace hardcoded paths with proper BLI_get_folder calls */
 		home = getenv("HOME");
 		if (read_bookmarks && home) {
-			BLI_snprintf(line, 256, "%s/", home);
+			BLI_snprintf(line, sizeof(line), "%s/", home);
 			fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM_BOOKMARKS, line, FS_INSERT_SORTED);
-			BLI_snprintf(line, 256, "%s/Desktop/", home);
+			BLI_snprintf(line, sizeof(line), "%s/Desktop/", home);
 			if (BLI_exists(line)) {
 				fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM_BOOKMARKS, line, FS_INSERT_SORTED);
 			}
-			BLI_snprintf(line, 256, "%s/Documents/", home);
+			BLI_snprintf(line, sizeof(line), "%s/Documents/", home);
 			if (BLI_exists(line)) {
 				fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM_BOOKMARKS, line, FS_INSERT_SORTED);
 			}
-			BLI_snprintf(line, 256, "%s/Pictures/", home);
+			BLI_snprintf(line, sizeof(line), "%s/Pictures/", home);
 			if (BLI_exists(line)) {
 				fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM_BOOKMARKS, line, FS_INSERT_SORTED);
 			}
-			BLI_snprintf(line, 256, "%s/Music/", home);
+			BLI_snprintf(line, sizeof(line), "%s/Music/", home);
 			if (BLI_exists(line)) {
 				fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM_BOOKMARKS, line, FS_INSERT_SORTED);
 			}
-			BLI_snprintf(line, 256, "%s/Movies/", home);
+			BLI_snprintf(line, sizeof(line), "%s/Movies/", home);
 			if (BLI_exists(line)) {
 				fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM_BOOKMARKS, line, FS_INSERT_SORTED);
 			}
@@ -427,7 +427,7 @@
 			
 			pathString = CFURLCopyFileSystemPath(cfURL, kCFURLPOSIXPathStyle);
 			
-			if (!CFStringGetCString(pathString, line, 256, kCFStringEncodingASCII))
+			if (!CFStringGetCString(pathString, line, sizeof(line), kCFStringEncodingASCII))
 				continue;
 			fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, line, FS_INSERT_SORTED);
 			
@@ -480,7 +480,7 @@
 				
 				pathString = CFURLCopyFileSystemPath(cfURL, kCFURLPOSIXPathStyle);
 				
-				if (!CFStringGetCString(pathString, line, 256, kCFStringEncodingASCII))
+				if (!CFStringGetCString(pathString, line, sizeof(line), kCFStringEncodingASCII))
 					continue;
 				fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM_BOOKMARKS, line, FS_INSERT_SORTED);
 				
@@ -499,9 +499,9 @@
 		const char *home = getenv("HOME");
 
 		if (read_bookmarks && home) {
-			BLI_snprintf(line, FILE_MAXDIR, "%s/", home);
+			BLI_snprintf(line, sizeof(line), "%s/", home);
 			fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM_BOOKMARKS, line, FS_INSERT_SORTED);
-			BLI_snprintf(line, FILE_MAXDIR, "%s/Desktop/", home);
+			BLI_snprintf(line, sizeof(line), "%s/Desktop/", home);
 			if (BLI_exists(line)) {
 				fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM_BOOKMARKS, line, FS_INSERT_SORTED);
 			}
@@ -527,7 +527,7 @@
 
 					len = strlen(mnt->mnt_dir);
 					if (len && mnt->mnt_dir[len - 1] != '/') {
-						BLI_snprintf(line, FILE_MAXDIR, "%s/", mnt->mnt_dir);
+						BLI_snprintf(line, sizeof(line), "%s/", mnt->mnt_dir);
 						fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, line, FS_INSERT_SORTED);
 					}
 					else {




More information about the Bf-blender-cvs mailing list