[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49126] trunk/blender: BGE LibLoad: Allow the user to disable loading text datablocks if they want to attempt to increase security by not loading potential Python scripts .

Mitchell Stokes mogurijin at gmail.com
Mon Jul 23 00:58:13 CEST 2012


Revision: 49126
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49126
Author:   moguri
Date:     2012-07-22 22:58:12 +0000 (Sun, 22 Jul 2012)
Log Message:
-----------
BGE LibLoad: Allow the user to disable loading text datablocks if they want to attempt to increase security by not loading potential Python scripts.

Modified Paths:
--------------
    trunk/blender/doc/python_api/rst/bge.logic.rst
    trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
    trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.h
    trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp

Modified: trunk/blender/doc/python_api/rst/bge.logic.rst
===================================================================
--- trunk/blender/doc/python_api/rst/bge.logic.rst	2012-07-22 21:13:32 UTC (rev 49125)
+++ trunk/blender/doc/python_api/rst/bge.logic.rst	2012-07-22 22:58:12 UTC (rev 49126)
@@ -172,7 +172,7 @@
 
    Restarts the current game by reloading the .blend file (the last saved version, not what is currently running).
    
-.. function:: LibLoad(blend, type, data, load_actions=False, verbose=False)
+.. function:: LibLoad(blend, type, data, load_actions=False, verbose=False, load_scripts=True)
    
    Converts the all of the datablocks of the given type from the given blend.
    
@@ -186,6 +186,8 @@
    :type load_actions: bool
    :arg verbose: Whether or not to print debugging information (e.g., "SceneName: Scene")
    :type verbose: bool
+   :arg load_scripts: Whether or not to load text datablocks as well (can be disabled for some extra security)
+   :type load_scripts: bool
    
 .. function:: LibNew(name, type, data)
 

Modified: trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.cpp	2012-07-22 21:13:32 UTC (rev 49125)
+++ trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.cpp	2012-07-22 22:58:12 UTC (rev 49126)
@@ -988,8 +988,7 @@
 
 	load_datablocks(main_newlib, bpy_openlib, path, idcode);
 
-	if (idcode==ID_SCE) {
-		/* assume we want text blocks too */
+	if (idcode==ID_SCE && options & LIB_LOAD_LOAD_SCRIPTS) {
 		load_datablocks(main_newlib, bpy_openlib, path, ID_TXT);
 	}
 
@@ -1045,9 +1044,9 @@
 		}
 
 		/* Handle any text datablocks */
+		if (options & LIB_LOAD_LOAD_SCRIPTS)
+			addImportMain(main_newlib);
 
-		addImportMain(main_newlib);
-
 		/* Now handle all the actions */
 		if (options & LIB_LOAD_LOAD_ACTIONS) {
 			ID *action;

Modified: trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.h
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.h	2012-07-22 21:13:32 UTC (rev 49125)
+++ trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.h	2012-07-22 22:58:12 UTC (rev 49126)
@@ -182,6 +182,7 @@
 	{
 		LIB_LOAD_LOAD_ACTIONS = 1,
 		LIB_LOAD_VERBOSE = 2,
+		LIB_LOAD_LOAD_SCRIPTS = 4,
 	};
 
 

Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp	2012-07-22 21:13:32 UTC (rev 49125)
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp	2012-07-22 22:58:12 UTC (rev 49126)
@@ -676,12 +676,12 @@
 	char *err_str= NULL;
 
 	short options=0;
-	int load_actions=0, verbose=0;
+	int load_actions=0, verbose=0, load_scripts=1;
 
-	static const char *kwlist[] = {"path", "group", "buffer", "load_actions", "verbose", NULL};
+	static const char *kwlist[] = {"path", "group", "buffer", "load_actions", "verbose", "load_scripts", NULL};
 	
-	if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss|y*ii:LibLoad", const_cast<char**>(kwlist),
-									&path, &group, &py_buffer, &load_actions, &verbose))
+	if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss|y*iii:LibLoad", const_cast<char**>(kwlist),
+									&path, &group, &py_buffer, &load_actions, &verbose, &load_scripts))
 		return NULL;
 
 	/* setup options */
@@ -689,6 +689,8 @@
 		options |= KX_BlenderSceneConverter::LIB_LOAD_LOAD_ACTIONS;
 	if (verbose != 0)
 		options |= KX_BlenderSceneConverter::LIB_LOAD_VERBOSE;
+	if (load_scripts != 0)
+		options |= KX_BlenderSceneConverter::LIB_LOAD_LOAD_SCRIPTS;
 
 	if (!py_buffer.buf)
 	{




More information about the Bf-blender-cvs mailing list