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 <g...@samba.org> 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 <g...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> Autobuild-User(master): Ralph Böhme <s...@samba.org> Autobuild-Date(master): Wed Nov 23 16:52:38 CET 2016 on sn-devel-144 commit 1f91b6aa63df4c48c49dabf8b30cde33579da17f Author: Michael Adam <ob...@samba.org> Date: Wed Nov 23 11:14:54 2016 +0100 param: validate value in lp_canonicalize_parameter_with_value() Signed-off-by: Michael Adam <ob...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit fa7e40b92460c094e64cb175dfb297436fe483eb Author: Michael Adam <ob...@samba.org> 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 <ob...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 21ae8871580fbcacfb0091fb83ba328448850b4d Author: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Date: Mon Nov 21 14:56:52 2016 +0100 param: add lp_parameter_value_is_valid() function Signed-off-by: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Reviewed-by: Michael Adam <ob...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 41cc17c8d174fc54754b11ff6f68b155909642f5 Author: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Date: Tue Nov 22 11:20:22 2016 +0100 net conf: fix error message Signed-off-by: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Reviewed-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> ----------------------------------------------------------------------- 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