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)); (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.

View File

@ -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,