1
0
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:
Michael Adam 2007-06-29 13:07:54 +00:00 committed by Gerald (Jerry) Carter
parent 2073303664
commit e388130aa6
2 changed files with 28 additions and 1 deletions

View File

@ -2788,6 +2788,24 @@ BOOL lp_parameter_valid(const char *pszParmName)
(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.
Returns False if the parameter string is not recognised, else TRUE.

View File

@ -178,12 +178,21 @@ static WERROR reg_setvalue_internal(struct registry_key *key,
}
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);
werr = WERR_INVALID_PARAM;
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);
if (!W_ERROR_IS_OK(werr)) {
d_fprintf(stderr,