diff options
author | Jason Rassi <rassi@10gen.com> | 2015-01-15 20:28:25 -0500 |
---|---|---|
committer | Jason Rassi <rassi@10gen.com> | 2015-01-15 20:29:07 -0500 |
commit | 1e9f4211e895736973ed7ad1df296dd32f04052f (patch) | |
tree | 2088a13fe472556f7182aa2b6d7ae5fa1bce9a0d /src/mongo/db/commands.cpp | |
parent | f01c8a0ee4ef882bcc0bc54fc2a23d26d5b2ea68 (diff) | |
download | mongo-1e9f4211e895736973ed7ad1df296dd32f04052f.tar.gz |
SERVER-16659 Better error detection when parsing cursor cmd requests
Diffstat (limited to 'src/mongo/db/commands.cpp')
-rw-r--r-- | src/mongo/db/commands.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mongo/db/commands.cpp b/src/mongo/db/commands.cpp index 36bb2a37da6..7fcfeebf3e1 100644 --- a/src/mongo/db/commands.cpp +++ b/src/mongo/db/commands.cpp @@ -282,12 +282,14 @@ namespace mongo { BSONObj cursor = cursorElem.embeddedObject(); BSONElement batchSizeElem = cursor["batchSize"]; - if (batchSizeElem.eoo()) { - if (!cursor.isEmpty()) { - return Status(ErrorCodes::BadValue, - "cursor object can't contain fields other than batchSize"); - } + const int expectedNumberOfCursorFields = batchSizeElem.eoo() ? 0 : 1; + if (cursor.nFields() != expectedNumberOfCursorFields) { + return Status(ErrorCodes::BadValue, + "cursor object can't contain fields other than batchSize"); + } + + if (batchSizeElem.eoo()) { return Status::OK(); } |