summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/utils/net_rpc_conf.c49
1 files changed, 29 insertions, 20 deletions
diff --git a/source3/utils/net_rpc_conf.c b/source3/utils/net_rpc_conf.c
index edf612088a..61555e26f4 100644
--- a/source3/utils/net_rpc_conf.c
+++ b/source3/utils/net_rpc_conf.c
@@ -1739,6 +1739,7 @@ static NTSTATUS rpc_conf_setparm_internal(struct net_context *c,
struct winreg_String key, keyclass;
enum winreg_CreateAction action = 0;
+ const char *service_name, *param_name, *valstr;
const char *canon_valname;
const char *canon_valstr;
@@ -1770,7 +1771,11 @@ static NTSTATUS rpc_conf_setparm_internal(struct net_context *c,
goto error;
}
- key.name = argv[0];
+ service_name = argv[0];
+ param_name = argv[1];
+ valstr = argv[2];
+
+ key.name = service_name;
keyclass.name = "";
status = dcerpc_winreg_CreateKey(b, frame, &key_hnd, key, keyclass,
@@ -1779,13 +1784,13 @@ static NTSTATUS rpc_conf_setparm_internal(struct net_context *c,
if (!(NT_STATUS_IS_OK(status))) {
d_fprintf(stderr, _("ERROR: Could not create share key '%s'\n%s\n"),
- argv[0], nt_errstr(status));
+ service_name, nt_errstr(status));
goto error;
}
if (!W_ERROR_IS_OK(werr)) {
d_fprintf(stderr, _("ERROR: Could not create share key '%s'\n%s\n"),
- argv[0], win_errstr(werr));
+ service_name, win_errstr(werr));
goto error;
}
@@ -1793,22 +1798,23 @@ static NTSTATUS rpc_conf_setparm_internal(struct net_context *c,
case REG_ACTION_NONE:
werr = WERR_CREATE_FAILED;
d_fprintf(stderr, _("ERROR: Could not create share key '%s'\n%s\n"),
- argv[0], win_errstr(werr));
+ service_name, win_errstr(werr));
goto error;
case REG_CREATED_NEW_KEY:
DEBUG(5, ("net rpc conf setparm:"
- "createkey created %s\n", argv[0]));
+ "createkey created %s\n", service_name));
break;
case REG_OPENED_EXISTING_KEY:
DEBUG(5, ("net rpc conf setparm:"
- "createkey opened existing %s\n", argv[0]));
+ "createkey opened existing %s\n",
+ service_name));
/* delete posibly existing value */
status = rpc_conf_del_value(frame,
b,
&key_hnd,
- argv[0],
- argv[1],
+ service_name,
+ param_name,
&werr);
if (!(NT_STATUS_IS_OK(status))) {
@@ -1826,28 +1832,31 @@ static NTSTATUS rpc_conf_setparm_internal(struct net_context *c,
* check if parameter is valid for writing
*/
- if (!lp_parameter_is_valid(argv[1])) {
- d_fprintf(stderr, "Invalid parameter '%s' given.\n", argv[1]);
+ if (!lp_parameter_is_valid(param_name)) {
+ d_fprintf(stderr, "Invalid parameter '%s' given.\n",
+ param_name);
werr = WERR_INVALID_PARAM;
goto error;
}
- if (!smbconf_reg_parameter_is_valid(argv[1])) {
+ if (!smbconf_reg_parameter_is_valid(param_name)) {
d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n",
- argv[1]);
+ param_name);
werr = WERR_INVALID_PARAM;
goto error;
}
- if (!strequal(argv[0], "global") && lp_parameter_is_global(argv[1])) {
+ if (!strequal(service_name, "global") &&
+ lp_parameter_is_global(param_name))
+ {
d_fprintf(stderr, "Global parameter '%s' not allowed in "
- "service definition ('%s').\n", argv[1],
- argv[0]);
+ "service definition ('%s').\n", param_name,
+ service_name);
werr = WERR_INVALID_PARAM;
goto error;
}
- if (!lp_canonicalize_parameter_with_value(argv[1], argv[2],
+ if (!lp_canonicalize_parameter_with_value(param_name, valstr,
&canon_valname,
&canon_valstr))
{
@@ -1856,26 +1865,26 @@ static NTSTATUS rpc_conf_setparm_internal(struct net_context *c,
* So the value must be invalid.
*/
d_fprintf(stderr, "invalid value '%s' given for "
- "parameter '%s'\n", argv[1], argv[2]);
+ "parameter '%s'\n", param_name, valstr);
werr = WERR_INVALID_PARAM;
goto error;
}
/* set the parameter */
status = dcerpc_winreg_set_sz(frame, b, &share_hnd,
- argv[1], argv[2], &werr);
+ param_name, valstr, &werr);
if (!(NT_STATUS_IS_OK(status))) {
d_fprintf(stderr, "ERROR: Could not set parameter '%s'"
" with value %s\n %s\n",
- argv[1], argv[2], nt_errstr(status));
+ param_name, valstr, nt_errstr(status));
goto error;
}
if (!(W_ERROR_IS_OK(werr))) {
d_fprintf(stderr, "ERROR: Could not set parameter '%s'"
" with value %s\n %s\n",
- argv[1], argv[2], win_errstr(werr));
+ param_name, valstr, win_errstr(werr));
goto error;
}