mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
r23657: Prevent setting of a global option in a share definition
in "net conf setparm".
Michael
(This used to be commit bf92d56798
)
This commit is contained in:
parent
2073303664
commit
e388130aa6
@ -2788,6 +2788,24 @@ BOOL lp_parameter_valid(const char *pszParmName)
|
|||||||
(strchr(pszParmName, ':') != NULL));
|
(strchr(pszParmName, ':') != NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
Check whether the given name is the name of a global parameter.
|
||||||
|
Returns True for strings belonging to parameters of class
|
||||||
|
P_GLOBAL, False for all other strings, also for parametric options
|
||||||
|
and strings not belonging to any option.
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
BOOL lp_parameter_is_global(const char *pszParmName)
|
||||||
|
{
|
||||||
|
int num = map_parameter(pszParmName);
|
||||||
|
|
||||||
|
if (num >= 0) {
|
||||||
|
return (parm_table[num].p_class == P_GLOBAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return False;
|
||||||
|
}
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
Map a parameter's string representation to something we can use.
|
Map a parameter's string representation to something we can use.
|
||||||
Returns False if the parameter string is not recognised, else TRUE.
|
Returns False if the parameter string is not recognised, else TRUE.
|
||||||
|
@ -178,12 +178,21 @@ static WERROR reg_setvalue_internal(struct registry_key *key,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (registry_smbconf_valname_forbidden(valname)) {
|
if (registry_smbconf_valname_forbidden(valname)) {
|
||||||
d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n",
|
d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n",
|
||||||
valname);
|
valname);
|
||||||
werr = WERR_INVALID_PARAM;
|
werr = WERR_INVALID_PARAM;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!strequal(key->key->name, GLOBAL_NAME) &&
|
||||||
|
lp_parameter_is_global(valname))
|
||||||
|
{
|
||||||
|
d_fprintf(stderr, "Global paramter '%s' not allowed in "
|
||||||
|
"service definition.\n", valname);
|
||||||
|
werr = WERR_INVALID_PARAM;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
werr = reg_setvalue(key, valname, &val);
|
werr = reg_setvalue(key, valname, &val);
|
||||||
if (!W_ERROR_IS_OK(werr)) {
|
if (!W_ERROR_IS_OK(werr)) {
|
||||||
d_fprintf(stderr,
|
d_fprintf(stderr,
|
||||||
|
Loading…
Reference in New Issue
Block a user