mirror of
https://github.com/samba-team/samba.git
synced 2025-03-11 16:58:40 +03:00
s3:net rpc conf: reorganize the validity check and canonicalization of the input in "setparm"
Signed-off-by: Michael Adam <obnox@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
429ab4ed02
commit
3e53097689
@ -1822,39 +1822,45 @@ static NTSTATUS rpc_conf_setparm_internal(struct net_context *c,
|
||||
break;
|
||||
}
|
||||
|
||||
/* check if parameter is valid for writing */
|
||||
if (!lp_canonicalize_parameter_with_value(argv[1], argv[2],
|
||||
&canon_valname,
|
||||
&canon_valstr))
|
||||
{
|
||||
if (canon_valname == NULL) {
|
||||
d_fprintf(stderr, "invalid parameter '%s' given\n",
|
||||
argv[1]);
|
||||
} else {
|
||||
d_fprintf(stderr, "invalid value '%s' given for "
|
||||
"parameter '%s'\n", argv[1], argv[2]);
|
||||
}
|
||||
/*
|
||||
* check if parameter is valid for writing
|
||||
*/
|
||||
|
||||
if (!lp_parameter_is_valid(argv[1])) {
|
||||
d_fprintf(stderr, "Invalid parameter '%s' given.\n", argv[1]);
|
||||
werr = WERR_INVALID_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!smbconf_reg_parameter_is_valid(canon_valname)) {
|
||||
if (!smbconf_reg_parameter_is_valid(argv[1])) {
|
||||
d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n",
|
||||
argv[1]);
|
||||
werr = WERR_INVALID_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!strequal(argv[0], "global") &&
|
||||
lp_parameter_is_global(argv[1]))
|
||||
{
|
||||
if (!strequal(argv[0], "global") && lp_parameter_is_global(argv[1])) {
|
||||
d_fprintf(stderr, "Global parameter '%s' not allowed in "
|
||||
"service definition ('%s').\n", canon_valname,
|
||||
"service definition ('%s').\n", argv[1],
|
||||
argv[0]);
|
||||
werr = WERR_INVALID_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!lp_canonicalize_parameter_with_value(argv[1], argv[2],
|
||||
&canon_valname,
|
||||
&canon_valstr))
|
||||
{
|
||||
/*
|
||||
* We already know the parameter name is valid.
|
||||
* So the value must be invalid.
|
||||
*/
|
||||
d_fprintf(stderr, "invalid value '%s' given for "
|
||||
"parameter '%s'\n", argv[1], argv[2]);
|
||||
werr = WERR_INVALID_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* set the parameter */
|
||||
status = dcerpc_winreg_set_sz(frame, b, &share_hnd,
|
||||
argv[1], argv[2], &werr);
|
||||
|
Loading…
x
Reference in New Issue
Block a user