summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands.cpp
diff options
context:
space:
mode:
authorJason Rassi <rassi@10gen.com>2015-01-15 20:28:25 -0500
committerJason Rassi <rassi@10gen.com>2015-01-15 20:29:07 -0500
commit1e9f4211e895736973ed7ad1df296dd32f04052f (patch)
tree2088a13fe472556f7182aa2b6d7ae5fa1bce9a0d /src/mongo/db/commands.cpp
parentf01c8a0ee4ef882bcc0bc54fc2a23d26d5b2ea68 (diff)
downloadmongo-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.cpp12
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();
}