From: Sage Weil Date: Thu, 11 Jan 2018 22:26:10 +0000 (-0600) Subject: mon/ConfigMonitor: validate and normalize option on 'config set' X-Git-Tag: v13.0.2~78^2~51 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bb019ccd36a73219b27647d2a168af29c37d1eff;p=ceph.git mon/ConfigMonitor: validate and normalize option on 'config set' Signed-off-by: Sage Weil --- diff --git a/src/mon/ConfigMonitor.cc b/src/mon/ConfigMonitor.cc index a758ac314cf4..6c29e5540347 100644 --- a/src/mon/ConfigMonitor.cc +++ b/src/mon/ConfigMonitor.cc @@ -338,8 +338,26 @@ bool ConfigMonitor::prepare_command(MonOpRequestRef op) cmd_getval(g_ceph_context, cmdmap, "name", name); cmd_getval(g_ceph_context, cmdmap, "value", value); - OptionMask mask; + if (prefix == "config set") { + const Option *opt = g_conf->find_option(name); + if (!opt) { + ss << "unrecognized config option '" << name << "'"; + err = -EINVAL; + goto reply; + } + + Option::value_t real_value; + string str; + err = opt->parse_value(value, &real_value, &str); + if (err < 0) { + ss << "error parsing value: " << str; + goto reply; + } + value = stringify(real_value); + } + string section; + OptionMask mask; if (!ConfigMap::parse_mask(who, §ion, &mask)) { ss << "unrecognized config target '" << who << "'"; err = -EINVAL;