summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2007-06-29 12:30:41 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:23:42 -0500
commit20733036644c11a6b4fa7466f9a5b3aa1cae3916 (patch)
treefc815cf588f638d26d324e3de0b2d1dd745f9327
parent96c4bf4a1c70e080107e954ea09dbe0a9709ae4f (diff)
downloadsamba-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)
-rw-r--r--source3/param/loadparm.c12
-rw-r--r--source3/utils/net_conf.c14
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;
}