]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: OSDMonitor: don't rely on client-side validation for command arguments 1490/head
authorJoao Eduardo Luis <joao.luis@inktank.com>
Fri, 22 Nov 2013 18:00:39 +0000 (18:00 +0000)
committerJoao Eduardo Luis <joao.luis@inktank.com>
Tue, 18 Mar 2014 16:35:59 +0000 (16:35 +0000)
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
src/mon/OSDMonitor.cc

index e757cfd798bc52ca7d2443ee4411017b3cef7488..a3ec269dcef6d3bf64d80023be8da74624fac087 100644 (file)
@@ -3798,7 +3798,11 @@ bool OSDMonitor::prepare_command_impl(MMonCommand *m,
       newcrush.set_tunables_optimal();
     } else if (profile == "default") {
       newcrush.set_tunables_default();
-    } 
+    } else {
+      ss << "unrecognized profile '" << profile << "'";
+      err = -EINVAL;
+      goto reply;
+    }
     pending_inc.crush.clear();
     newcrush.encode(pending_inc.crush);
     ss << "adjusted tunables profile to " << profile;
@@ -3992,6 +3996,10 @@ bool OSDMonitor::prepare_command_impl(MMonCommand *m,
       return prepare_set_flag(m, CEPH_OSDMAP_NODEEP_SCRUB);
     else if (key == "notieragent")
       return prepare_set_flag(m, CEPH_OSDMAP_NOTIERAGENT);
+    else {
+      ss << "unrecognized flag '" << key << "'";
+      err = -EINVAL;
+    }
 
   } else if (prefix == "osd unset") {
     string key;
@@ -4016,6 +4024,10 @@ bool OSDMonitor::prepare_command_impl(MMonCommand *m,
       return prepare_unset_flag(m, CEPH_OSDMAP_NODEEP_SCRUB);
     else if (key == "notieragent")
       return prepare_unset_flag(m, CEPH_OSDMAP_NOTIERAGENT);
+    else {
+      ss << "unrecognized flag '" << key << "'";
+      err = -EINVAL;
+    }
 
   } else if (prefix == "osd cluster_snap") {
     // ** DISABLE THIS FOR NOW **