From: Sage Weil Date: Wed, 17 Jul 2019 14:44:49 +0000 (-0500) Subject: mon/MgrMonitor: fix null deref when invalid formatter is specified X-Git-Tag: v14.2.3~25^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=413f5c10124553f256423497634b4f3135b51d15;p=ceph.git mon/MgrMonitor: fix null deref when invalid formatter is specified Fixes: https://tracker.ceph.com/issues/40804 Signed-off-by: Sage Weil (cherry picked from commit b3cc451fc299c7d377196aaa9058026dad231721) --- diff --git a/src/mon/MgrMonitor.cc b/src/mon/MgrMonitor.cc index e7608a1174b4..08797200adb6 100644 --- a/src/mon/MgrMonitor.cc +++ b/src/mon/MgrMonitor.cc @@ -843,8 +843,9 @@ bool MgrMonitor::preprocess_command(MonOpRequestRef op) } string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("json-pretty")); - boost::scoped_ptr f(Formatter::create(format)); + cmd_getval(g_ceph_context, cmdmap, "format", format); + boost::scoped_ptr f(Formatter::create(format, "json-pretty", + "json-pretty")); string prefix; cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); @@ -940,14 +941,10 @@ bool MgrMonitor::preprocess_command(MonOpRequestRef op) } f->flush(rdata); } else if (prefix == "mgr versions") { - if (!f) - f.reset(Formatter::create("json-pretty")); count_metadata("ceph_version", f.get()); f->flush(rdata); r = 0; } else if (prefix == "mgr count-metadata") { - if (!f) - f.reset(Formatter::create("json-pretty")); string field; cmd_getval(g_ceph_context, cmdmap, "property", field); count_metadata(field, f.get());