From: Nikhil Kshirsagar Date: Tue, 22 Mar 2022 05:04:23 +0000 (+0530) Subject: mon: Resolve unhandled exception in X-Git-Tag: v17.2.4~34^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cc0bf8dbfed8d1c79756760ec5ad3db7a5cee350;p=ceph.git mon: Resolve unhandled exception in __generate_command_map() If improper json data is passed to rados, it can end up crashing the mon. This fix will catch the exception if thrown by __generate_command_map() and avoid the mon getting terminated due to an uncaught exception. Fixes: https://tracker.ceph.com/issues/54558 Signed-off-by: Nikhil Kshirsagar (cherry picked from commit 1109e62f6a3c0a7e06a088c4b833c8ecec51f791) --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index d647316e9e5c..1e3eda615688 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -3424,7 +3424,15 @@ void Monitor::handle_command(MonOpRequestRef op) // validate user's permissions for requested command map param_str_map; - _generate_command_map(cmdmap, param_str_map); + + // Catch bad_cmd_get exception if _generate_command_map() throws it + try { + _generate_command_map(cmdmap, param_str_map); + } + catch(bad_cmd_get& e) { + reply_command(op, -EINVAL, e.what(), 0); + } + if (!_allowed_command(session, service, prefix, cmdmap, param_str_map, mon_cmd)) { dout(1) << __func__ << " access denied" << dendl;