From: Nitzan Mordechai Date: Mon, 31 Jan 2022 07:50:46 +0000 (+0200) Subject: mon/Monitor: Validate monitor ids during 'mon ok-to-stop' cmd X-Git-Tag: v18.0.0~920^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=df2e51029f564e3d1064f776ddc13ba47403d145;p=ceph.git mon/Monitor: Validate monitor ids during 'mon ok-to-stop' cmd 'mon ok-to-stop' should validate the user provided ids before proceeding further Fixed: https://tracker.ceph.com/issues/54122 Signed-off-by: Nitzan Mordechai --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index d1e54d36c7bf..df895a2016c9 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -3829,7 +3829,7 @@ void Monitor::handle_command(MonOpRequestRef op) rs = ""; r = 0; } else if (prefix == "mon ok-to-stop") { - vector ids; + vector ids, invalid_ids; if (!cmd_getval(cmdmap, "ids", ids)) { r = -EINVAL; goto out; @@ -3841,8 +3841,16 @@ void Monitor::handle_command(MonOpRequestRef op) for (auto& n : ids) { if (monmap->contains(n)) { wouldbe.erase(n); + } else { + invalid_ids.push_back(n); } } + if (!invalid_ids.empty()) { + r = 0; + rs = "invalid mon(s) specified: " + stringify(invalid_ids); + goto out; + } + if (wouldbe.size() < monmap->min_quorum_size()) { r = -EBUSY; rs = "not enough monitors would be available (" + stringify(wouldbe) +