From: Xiubo Li Date: Tue, 31 Dec 2019 06:57:51 +0000 (-0500) Subject: cephfs-journal-tool: fix crash with empty argv X-Git-Tag: v14.2.8~61^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=68daca8b7adb32709a25d9bfd73586d8341fcce0;p=ceph.git cephfs-journal-tool: fix crash with empty argv If the argument is empty, it will be better to give a hint instead of crashing. Fixes: https://tracker.ceph.com/issues/43438 Signed-off-by: Xiubo Li (cherry picked from commit 2e38246ba24ddf48afa6c3a631e3aaa5e5743c93) --- diff --git a/src/tools/cephfs/JournalTool.cc b/src/tools/cephfs/JournalTool.cc index 29dca56df00..57bead838c4 100644 --- a/src/tools/cephfs/JournalTool.cc +++ b/src/tools/cephfs/JournalTool.cc @@ -224,6 +224,11 @@ bool JournalTool::can_execute_for_all_ranks(const std::string &mode, */ int JournalTool::main_journal(std::vector &argv) { + if (argv.empty()) { + derr << "Missing journal command, please see help" << dendl; + return -EINVAL; + } + std::string command = argv[0]; if (command == "inspect") { return journal_inspect(); @@ -291,8 +296,8 @@ int JournalTool::main_header(std::vector &argv) ceph_assert(js.header != NULL); } - if (argv.size() == 0) { - derr << "Invalid header command, must be [get|set]" << dendl; + if (argv.empty()) { + derr << "Missing header command, must be [get|set]" << dendl; return -EINVAL; } std::vector::iterator arg = argv.begin(); @@ -367,8 +372,12 @@ int JournalTool::main_event(std::vector &argv) { int r; - std::vector::iterator arg = argv.begin(); + if (argv.empty()) { + derr << "Missing event command, please see help" << dendl; + return -EINVAL; + } + std::vector::iterator arg = argv.begin(); std::string command = *(arg++); if (command != "get" && command != "splice" && command != "recover_dentries") { derr << "Unknown argument '" << command << "'" << dendl;