[SCM] Samba Shared Repository - branch master updated

[email protected] (Ralph B??hme)
Newsgroups gmane.network.samba.cvs
Message-ID <[email protected]>
The branch, master has been updated
       via  28fbc5e s3-net: use SMB_SIGNING_DEFAULT in connect_to_service()
       via  1f91b6a param: validate value in lp_canonicalize_parameter_with_value()
       via  fa7e40b param: use early return in lp_canonicalize_parameter_with_value()
       via  21ae887 param: add lp_parameter_value_is_valid() function
       via  41cc17c net conf: fix error message
      from  c1a316b samba_dnsupdate: Raise after the error count is incremented

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


- Log -----------------------------------------------------------------
commit 28fbc5ea2e39bf23808aee5035cfc2f58b7fbcfd
Author: Günther Deschner <[email protected]>
Date:   Fri Nov 18 18:17:52 2016 +0100

    s3-net: use SMB_SIGNING_DEFAULT in connect_to_service()
    
    For non IPC$ connections we get NT_STATUS_REVISION_MISMATCH otherwise when using
    the connection.
    
    Guenther
    
    Signed-off-by: Guenther Deschner <[email protected]>
    Reviewed-by: Ralph Boehme <[email protected]>
    
    Autobuild-User(master): Ralph Böhme <[email protected]>
    Autobuild-Date(master): Wed Nov 23 16:52:38 CET 2016 on sn-devel-144

commit 1f91b6aa63df4c48c49dabf8b30cde33579da17f
Author: Michael Adam <[email protected]>
Date:   Wed Nov 23 11:14:54 2016 +0100

    param: validate value in lp_canonicalize_parameter_with_value()
    
    Signed-off-by: Michael Adam <[email protected]>
    Reviewed-by: Ralph Boehme <[email protected]>

commit fa7e40b92460c094e64cb175dfb297436fe483eb
Author: Michael Adam <[email protected]>
Date:   Wed Nov 23 11:12:42 2016 +0100

    param: use early return in lp_canonicalize_parameter_with_value()
    
    This reduces the indentation and streamlines the flow.
    View with "git show -w" to see it's mostly indentation change.
    
    Signed-off-by: Michael Adam <[email protected]>
    Reviewed-by: Ralph Boehme <[email protected]>

commit 21ae8871580fbcacfb0091fb83ba328448850b4d
Author: Ralph Wuerthner <[email protected]>
Date:   Mon Nov 21 14:56:52 2016 +0100

    param: add lp_parameter_value_is_valid() function
    
    Signed-off-by: Ralph Wuerthner <[email protected]>
    Reviewed-by: Michael Adam <[email protected]>
    Reviewed-by: Ralph Boehme <[email protected]>

commit 41cc17c8d174fc54754b11ff6f68b155909642f5
Author: Ralph Wuerthner <[email protected]>
Date:   Tue Nov 22 11:20:22 2016 +0100

    net conf: fix error message
    
    Signed-off-by: Ralph Wuerthner <[email protected]>
    Reviewed-by: Volker Lendecke <[email protected]>
    Reviewed-by: Ralph Boehme <[email protected]>
    Reviewed-by: Michael Adam <[email protected]>

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

Summary of changes:
 source3/param/loadparm.c      | 98 +++++++++++++++++++++++++++++++++++++------
 source3/utils/net_conf_util.c |  2 +-
 source3/utils/net_util.c      |  7 +++-
 3 files changed, 92 insertions(+), 15 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 3e1a15e..21073c6 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -1062,6 +1062,7 @@ static bool hash_a_service(const char *name, int number);
 static void free_service_byindex(int iService);
 static void show_parameter(int parmIndex);
 static bool is_synonym_of(int parm1, int parm2, bool *inverse);
+static bool lp_parameter_value_is_valid(const char *parm_name, const char *val);
 
 /*
  * This is a helper function for parametrical options support.  It returns a
@@ -1687,9 +1688,11 @@ bool lp_canonicalize_parameter(const char *parm_name, const char **canon_parm,
  Turn the value given into the inverse boolean expression when
  the synonym is an invers boolean synonym.
 
- Return true if parm_name is a valid parameter name and
- in case it is an invers boolean synonym, if the val string could
- successfully be converted to the reverse bool.
+ Return true if
+ - parm_name is a valid parameter name and
+ - val is a valid value for this parameter and
+ - in case the parameter is an inverse boolean synonym, if the val
+   string could successfully be converted to the reverse bool.
  Return false in all other cases.
 **************************************************************************/
 
@@ -1700,6 +1703,7 @@ bool lp_canonicalize_parameter_with_value(const char *parm_name,
 {
 	int num;
 	bool inverse;
+	bool ret;
 
 	if (!lp_parameter_is_valid(parm_name)) {
 		*canon_parm = NULL;
@@ -1712,19 +1716,22 @@ bool lp_canonicalize_parameter_with_value(const char *parm_name,
 		/* parametric option */
 		*canon_parm = parm_name;
 		*canon_val = val;
-	} else {
-		*canon_parm = parm_table[num].label;
-		if (inverse) {
-			if (!lp_invert_boolean(val, canon_val)) {
-				*canon_val = NULL;
-				return false;
-			}
-		} else {
-			*canon_val = val;
+		return true;
+	}
+
+	*canon_parm = parm_table[num].label;
+	if (inverse) {
+		if (!lp_invert_boolean(val, canon_val)) {
+			*canon_val = NULL;
+			return false;
 		}
+	} else {
+		*canon_val = val;
 	}
 
-	return true;
+	ret = lp_parameter_value_is_valid(*canon_parm, *canon_val);
+
+	return ret;
 }
 
 /***************************************************************************
@@ -1852,6 +1859,71 @@ static void show_parameter(int parmIndex)
 	printf("\n");
 }
 
+/*
+ * Check the value for a P_ENUM
+ */
+static bool check_enum_parameter(struct parm_struct *parm, const char *value)
+{
+	int i;
+
+	for (i = 0; parm->enum_list[i].name; i++) {
+		if (strwicmp(value, parm->enum_list[i].name) == 0) {
+			return true;
+		}
+	}
+	return false;
+}
+
+/**************************************************************************
+ Check whether the given value is valid for the given parameter name.
+**************************************************************************/
+
+static bool lp_parameter_value_is_valid(const char *parm_name, const char *val)
+{
+	bool ret = false, tmp_bool;
+	int num = lpcfg_map_parameter(parm_name), tmp_int;
+	uint64_t tmp_int64 = 0;
+	struct parm_struct *parm;
+
+	if (num >= 0) {
+		parm = &parm_table[num];
+		switch (parm->type) {
+			case P_BOOL:
+			case P_BOOLREV:
+				ret = set_boolean(val, &tmp_bool);
+				break;
+
+			case P_INTEGER:
+				ret = (sscanf(val, "%d", &tmp_int) == 1);
+				break;
+
+			case P_OCTAL:
+				ret = (sscanf(val, "%o", &tmp_int) == 1);
+				break;
+
+			case P_ENUM:
+				ret = check_enum_parameter(parm, val);
+				break;
+
+			case P_BYTES:
+				if (conv_str_size_error(val, &tmp_int64) &&
+				    tmp_int64 <= INT_MAX) {
+					ret = true;
+				}
+				break;
+
+			case P_CHAR:
+			case P_LIST:
+			case P_STRING:
+			case P_USTRING:
+			case P_CMDLIST:
+				ret = true;
+				break;
+		}
+	}
+	return ret;
+}
+
 /***************************************************************************
  Show all parameter's name, type, [values,] and flags.
 ***************************************************************************/
diff --git a/source3/utils/net_conf_util.c b/source3/utils/net_conf_util.c
index a188097..ec6a479 100644
--- a/source3/utils/net_conf_util.c
+++ b/source3/utils/net_conf_util.c
@@ -61,7 +61,7 @@ bool net_conf_param_valid(const char *service,
 		 * So the value must be invalid.
 		 */
 		d_fprintf(stderr, "invalid value '%s' given for "
-			  "parameter '%s'\n", param, valstr);
+			  "parameter '%s'\n", valstr, param);
 		return false;
 	}
 
diff --git a/source3/utils/net_util.c b/source3/utils/net_util.c
index de929ff..cc65457 100644
--- a/source3/utils/net_util.c
+++ b/source3/utils/net_util.c
@@ -106,6 +106,7 @@ NTSTATUS connect_to_service(struct net_context *c,
 {
 	NTSTATUS nt_status;
 	int flags = 0;
+	enum smb_signing_setting signing_setting = SMB_SIGNING_DEFAULT;
 
 	c->opt_password = net_prompt_pass(c, c->opt_user_name);
 
@@ -121,12 +122,16 @@ NTSTATUS connect_to_service(struct net_context *c,
 		flags |= CLI_FULL_CONNECTION_USE_CCACHE;
 	}
 
+	if (strequal(service_type, "IPC")) {
+		signing_setting = SMB_SIGNING_IPC_DEFAULT;
+	}
+
 	nt_status = cli_full_connection(cli_ctx, NULL, server_name,
 					server_ss, c->opt_port,
 					service_name, service_type,
 					c->opt_user_name, c->opt_workgroup,
 					c->opt_password, flags,
-					SMB_SIGNING_IPC_DEFAULT);
+					signing_setting);
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		d_fprintf(stderr, _("Could not connect to server %s\n"),
 			  server_name);


-- 
Samba Shared Repository
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.