diff options
author | Michael Adam <obnox@samba.org> | 2007-06-29 12:30:41 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:23:42 -0500 |
commit | 20733036644c11a6b4fa7466f9a5b3aa1cae3916 (patch) | |
tree | fc815cf588f638d26d324e3de0b2d1dd745f9327 /source3 | |
parent | 96c4bf4a1c70e080107e954ea09dbe0a9709ae4f (diff) | |
download | samba-20733036644c11a6b4fa7466f9a5b3aa1cae3916.tar.gz samba-20733036644c11a6b4fa7466f9a5b3aa1cae3916.tar.bz2 samba-20733036644c11a6b4fa7466f9a5b3aa1cae3916.zip |
r23656: Add initial checking of the validity of a paramter
given to "net conf setparm". Add a utility function
lp_parameter_valid() for this to loadparm.c.
Michael
(This used to be commit 639051e58d4da9fb1116c19f0790250640b6ac7a)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/param/loadparm.c | 12 | ||||
-rw-r--r-- | source3/utils/net_conf.c | 14 |
2 files changed, 26 insertions, 0 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index c43a032560..58ea751fa5 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -2776,6 +2776,18 @@ BOOL lp_add_printer(const char *pszPrintername, int iDefaultService) return (True); } + +/*************************************************************************** + Check whether the given parameter name is valid. + Parametric options (names containing a colon) are considered valid. +***************************************************************************/ + +BOOL lp_parameter_valid(const char *pszParmName) +{ + return ((map_parameter(pszParmName) != -1) || + (strchr(pszParmName, ':') != NULL)); +} + /*************************************************************************** Map a parameter's string representation to something we can use. Returns False if the parameter string is not recognised, else TRUE. diff --git a/source3/utils/net_conf.c b/source3/utils/net_conf.c index 021ac0005d..5af2d6ccc5 100644 --- a/source3/utils/net_conf.c +++ b/source3/utils/net_conf.c @@ -167,6 +167,20 @@ static WERROR reg_setvalue_internal(struct registry_key *key, else { d_fprintf(stderr, "Only value types DWORD and SZ are" "currently implemented for setting values.\n"); + werr = WERR_INVALID_PARAM; + goto done; + } + + if (!lp_parameter_valid(valname)) { + d_fprintf(stderr, "Invalid parameter '%s' given.\n", valname); + werr = WERR_INVALID_PARAM; + goto done; + } + + if (registry_smbconf_valname_forbidden(valname)) { + d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n", + valname); + werr = WERR_INVALID_PARAM; goto done; } |