summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoao Eduardo Luis <joao.luis@inktank.com>2012-11-29 21:03:05 +0000
committerJoao Eduardo Luis <joao.luis@inktank.com>2012-11-29 21:03:05 +0000
commit079dd190446bedb928518f095933c9881011fa43 (patch)
tree7c8684e4fb5e2bbbbc2fd40b0755dd198102b2c7
parentc6cc476f18648ffeeacd21f45e5695580103f92b (diff)
downloadceph-079dd190446bedb928518f095933c9881011fa43.tar.gz
mon: Monitor: don't allow '+' or '-' prefixed values on parse_pos_long()
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
-rw-r--r--src/mon/Monitor.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc
index 79f257783e7..eee9e446e6b 100644
--- a/src/mon/Monitor.cc
+++ b/src/mon/Monitor.cc
@@ -83,6 +83,11 @@ static ostream& _prefix(std::ostream *_dout, const Monitor *mon) {
long parse_pos_long(const char *s, ostream *pss)
{
+ if (*s == '-' || *s == '+') {
+ *pss << "expected numerical value, got: " << s;
+ return -EINVAL;
+ }
+
string err;
long r = strict_strtol(s, 10, &err);
if ((r == 0) && !err.empty()) {