[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Thu Apr 13 13:21:03 UTC 2017


The branch, master has been updated
       via  5c04521 s3:tests: Add test for illegal value detection for 'name resolve order'
       via  8050db2 param: Check for valid values of 'name resolve order' option
      from  63c6209 updaterefs: Do not open transaction even when unnecessary

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


- Log -----------------------------------------------------------------
commit 5c04521b8e93ae4960e6d367af94fb198599a5f4
Author: Noel Power <noel.power at suse.com>
Date:   Tue Apr 11 14:38:34 2017 +0100

    s3:tests: Add test for illegal value detection for 'name resolve order'
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12739
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
    Autobuild-Date(master): Thu Apr 13 15:20:04 CEST 2017 on sn-devel-144

commit 8050db230331d468f2e6ebee341c4e8267cd626d
Author: Noel Power <noel.power at suse.com>
Date:   Tue Apr 11 11:26:45 2017 +0100

    param: Check for valid values of 'name resolve order' option
    
    This variable is populated by a list of values where each value should
    be a known option. This patch ensures that illegal values are detected.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12739
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

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

Summary of changes:
 docs-xml/smbdotconf/protocol/nameresolveorder.xml |  1 +
 lib/param/loadparm.c                              | 49 ++++++++++++++++++++++-
 lib/param/loadparm.h                              |  1 +
 python/samba/tests/docs.py                        |  6 ++-
 source3/param/loadparm.c                          |  5 ++-
 source3/script/tests/test_testparm_s3.sh          | 19 +++++++++
 6 files changed, 77 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/smbdotconf/protocol/nameresolveorder.xml b/docs-xml/smbdotconf/protocol/nameresolveorder.xml
index ec3aaf3..1e04582 100644
--- a/docs-xml/smbdotconf/protocol/nameresolveorder.xml
+++ b/docs-xml/smbdotconf/protocol/nameresolveorder.xml
@@ -1,6 +1,7 @@
 <samba:parameter name="name resolve order"
                  context="G"
                  type="cmdlist"
+                 handler="handle_name_resolve_order"
                  xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> 
 <description>
     <para>This option is used by the programs in the Samba 
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index cedf8fa..4d21d88 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -69,6 +69,7 @@
 #include "tdb.h"
 #include "librpc/gen_ndr/nbt.h"
 #include "libds/common/roles.h"
+#include "lib/util/samba_util.h"
 
 #ifdef HAVE_HTTPCONNECTENCRYPT
 #include <cups/http.h>
@@ -1710,6 +1711,50 @@ static bool set_variable_helper(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr
 
 }
 
+bool handle_name_resolve_order(struct loadparm_context *lp_ctx,
+			       struct loadparm_service *service,
+			       const char *pszParmValue, char **ptr)
+{
+	const char **valid_values = NULL;
+	const char **values_to_set = NULL;
+	int i;
+	bool value_is_valid = false;
+	valid_values = str_list_make_v3_const(NULL,
+					      DEFAULT_NAME_RESOLVE_ORDER,
+					      NULL);
+	if (valid_values == NULL) {
+		DBG_ERR("OOM: failed to make string list from %s\n",
+			DEFAULT_NAME_RESOLVE_ORDER);
+		goto out;
+	}
+	values_to_set = str_list_make_v3_const(lp_ctx->globals->ctx,
+					       pszParmValue,
+					       NULL);
+	if (values_to_set == NULL) {
+		DBG_ERR("OOM: failed to make string list from %s\n",
+			pszParmValue);
+		goto out;
+	}
+	TALLOC_FREE(lp_ctx->globals->name_resolve_order);
+	for (i = 0; values_to_set[i] != NULL; i++) {
+		value_is_valid = str_list_check(valid_values, values_to_set[i]);
+		if (!value_is_valid) {
+			DBG_ERR("WARNING: Ignoring invalid list value '%s' "
+				"for parameter 'name resolve order'\n",
+				values_to_set[i]);
+			break;
+		}
+	}
+out:
+	if (value_is_valid) {
+		lp_ctx->globals->name_resolve_order = values_to_set;
+	} else {
+		TALLOC_FREE(values_to_set);
+	}
+	TALLOC_FREE(valid_values);
+	return value_is_valid;
+}
+
 static bool set_variable(TALLOC_CTX *mem_ctx, struct loadparm_service *service,
 			 int parmnum, void *parm_ptr,
 			 const char *pszParmName, const char *pszParmValue,
@@ -2605,7 +2650,9 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
 	myname = get_myname(lp_ctx);
 	lpcfg_do_global_parameter(lp_ctx, "netbios name", myname);
 	talloc_free(myname);
-	lpcfg_do_global_parameter(lp_ctx, "name resolve order", "lmhosts wins host bcast");
+	lpcfg_do_global_parameter(lp_ctx,
+				  "name resolve order",
+				  DEFAULT_NAME_RESOLVE_ORDER);
 
 	lpcfg_do_global_parameter(lp_ctx, "fstype", "NTFS");
 
diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h
index d1e2b7c..e3c8216 100644
--- a/lib/param/loadparm.h
+++ b/lib/param/loadparm.h
@@ -105,6 +105,7 @@ struct file_lists {
 	time_t modtime;
 };
 
+#define DEFAULT_NAME_RESOLVE_ORDER "lmhosts wins host bcast"
 #define FLAG_DEPRECATED 0x1000 /* options that should no longer be used */
 #define FLAG_SYNONYM	0x2000 /* options that is a synonym of another option */
 #define FLAG_CMDLINE	0x10000 /* option has been overridden */
diff --git a/python/samba/tests/docs.py b/python/samba/tests/docs.py
index 65df573..202619a 100644
--- a/python/samba/tests/docs.py
+++ b/python/samba/tests/docs.py
@@ -163,7 +163,8 @@ class SmbDotConfTests(TestCase):
                           'client plaintext auth',
                           'registry shares',
                           'smb ports',
-                          'rpc server dynamic port range'])
+                          'rpc server dynamic port range',
+                          'name resolve order'])
         self._test_empty(['bin/testparm'])
 
     def test_default_s4(self):
@@ -171,7 +172,8 @@ class SmbDotConfTests(TestCase):
         self._set_defaults(['bin/samba-tool', 'testparm'])
         self._set_arbitrary(['bin/samba-tool', 'testparm'],
             exceptions = ['smb ports',
-                          'rpc server dynamic port range'])
+                          'rpc server dynamic port range',
+                          'name resolve order'])
         self._test_empty(['bin/samba-tool', 'testparm'])
 
     def _test_default(self, program):
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 57220a6..b543a6f 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -609,7 +609,10 @@ static void init_globals(struct loadparm_context *lp_ctx, bool reinit_globals)
 	lpcfg_string_set(Globals.ctx, &Globals.logon_path,
 			 "\\\\%N\\%U\\profile");
 
-	Globals.name_resolve_order = str_list_make_v3_const(NULL, "lmhosts wins host bcast", NULL);
+	Globals.name_resolve_order =
+			str_list_make_v3_const(Globals.ctx,
+					       DEFAULT_NAME_RESOLVE_ORDER,
+					       NULL);
 	lpcfg_string_set(Globals.ctx, &Globals.password_server, "*");
 
 	Globals.algorithmic_rid_base = BASE_RID;
diff --git a/source3/script/tests/test_testparm_s3.sh b/source3/script/tests/test_testparm_s3.sh
index c9682f0..6dcdeff 100755
--- a/source3/script/tests/test_testparm_s3.sh
+++ b/source3/script/tests/test_testparm_s3.sh
@@ -58,6 +58,25 @@ EOF
 	${TESTPARM} ${TEMP_CONFFILE}
 }
 
+testit "name resolve order = lmhosts wins host bcast"\
+	test_one_global_option "name resolve order = lmhosts wins host bcast" || \
+	failed=`expr ${failed} + 1`
+
+testit_expect_failure "name resolve order = bad wins host bcast"\
+	test_one_global_option "name resolve order = bad wins host bcast" || \
+	failed=`expr ${failed} + 1`
+
+testit_expect_failure "name resolve order = lmhosts bad host bcast"\
+	test_one_global_option "name resolve order = lmhosts bad host bcast" || \
+	failed=`expr ${failed} + 1`
+
+testit_expect_failure "name resolve order = lmhosts wins bad bcast"\
+	test_one_global_option "name resolve order = lmhosts wins bad bcast" || \
+	failed=`expr ${failed} + 1`
+
+testit_expect_failure "name resolve order = lmhosts wins host bad"\
+	test_one_global_option "name resolve order = lmhosts wins host bad" || \
+	failed=`expr ${failed} + 1`
 
 testit "netbios name" \
 	test_one_global_option "netbios name = funky" || \


-- 
Samba Shared Repository



More information about the samba-cvs mailing list