[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-1300-g664da57

Michael Adam obnox at samba.org
Tue Apr 28 10:19:48 GMT 2009


The branch, master has been updated
       via  664da577f931dfd47573d3d77a95afb573fba855 (commit)
       via  d5f2bbdc489b751331e86afae58b0d80c5fedb9c (commit)
      from  09ec85715b0e99740156ebb7213eddd1edfea631 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 664da577f931dfd47573d3d77a95afb573fba855
Author: Michael Adam <obnox at samba.org>
Date:   Tue Apr 28 12:18:23 2009 +0200

    pm_process():raise level of debug message
    
    Michael

commit d5f2bbdc489b751331e86afae58b0d80c5fedb9c
Author: Michael Adam <obnox at samba.org>
Date:   Mon Apr 27 18:10:14 2009 +0200

    s3:loadparm: prevent infinite include nesting.
    
    This introduces a hard coded MAX_INCLUDE_DEPTH of 100.
    When this is exceeded, handle_include (and hence lp_load) fails.
    
    One could of course implement a more intelligent loop detection
    in the include-tree, but this would require some restructuring
    of the internal loadparm housekeeping. Maybe as a second improvement
    step.
    
    Michael

-----------------------------------------------------------------------

Summary of changes:
 lib/util/params.c        |    2 +-
 source3/param/loadparm.c |   21 +++++++++++++++++++--
 2 files changed, 20 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/util/params.c b/lib/util/params.c
index 7af7ac7..80adc71 100644
--- a/lib/util/params.c
+++ b/lib/util/params.c
@@ -572,7 +572,7 @@ bool pm_process( const char *FileName,
 
   if( !result )                               /* Generic failure. */
     {
-    DEBUG(0,("%s Failed.  Error returned from params.c:parse().\n", func));
+    DEBUG(3,("%s Failed.  Error returned from params.c:parse().\n", func));
     return( false );
     }
 
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index b7c34d0..7e2affe 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -6908,6 +6908,10 @@ done:
 	return ret;
 }
 
+#define MAX_INCLUDE_DEPTH 100
+
+static uint8_t include_depth;
+
 static struct file_lists {
 	struct file_lists *next;
 	char *name;
@@ -7095,12 +7099,22 @@ static bool handle_include(int snum, const char *pszParmValue, char **ptr)
 {
 	char *fname;
 
+	if (include_depth >= MAX_INCLUDE_DEPTH) {
+		DEBUG(0, ("Error: Maximum include depth (%u) exceeded!\n",
+			  include_depth));
+		return false;
+	}
+
 	if (strequal(pszParmValue, INCLUDE_REGISTRY_NAME)) {
 		if (!bAllowIncludeRegistry) {
 			return true;
 		}
 		if (bInGlobalSection) {
-			return process_registry_globals();
+			bool ret;
+			include_depth++;
+			ret = process_registry_globals();
+			include_depth--;
+			return ret;
 		} else {
 			DEBUG(1, ("\"include = registry\" only effective "
 				  "in %s section\n", GLOBAL_NAME));
@@ -7117,7 +7131,10 @@ static bool handle_include(int snum, const char *pszParmValue, char **ptr)
 	string_set(ptr, fname);
 
 	if (file_exist(fname)) {
-		bool ret = pm_process(fname, do_section, do_parameter, NULL);
+		bool ret;
+		include_depth++;
+		ret = pm_process(fname, do_section, do_parameter, NULL);
+		include_depth--;
 		SAFE_FREE(fname);
 		return ret;
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list