diff options
author | Jason Rassi <rassi@10gen.com> | 2014-05-19 16:58:30 -0400 |
---|---|---|
committer | Dan Pasette <dan@mongodb.com> | 2014-05-24 19:38:05 -0400 |
commit | 57bd9bd1d6f4903d78be8a8d106a2fae2a628be7 (patch) | |
tree | 29a788303d3af33cfd8994f3e49a28ebe072092f | |
parent | c86d218c92820da50d97849af2c057498d6c7283 (diff) | |
download | mongo-57bd9bd1d6f4903d78be8a8d106a2fae2a628be7.tar.gz |
SERVER-13976 Cloner::go() fail fast if any collection has bad options
(cherry picked from commit 7fced83ca52d18991b2729e2e518248b9e7c7887)
-rw-r--r-- | src/mongo/db/cloner.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mongo/db/cloner.cpp b/src/mongo/db/cloner.cpp index 10f911427d1..b7c029452e7 100644 --- a/src/mongo/db/cloner.cpp +++ b/src/mongo/db/cloner.cpp @@ -412,6 +412,16 @@ namespace mongo { LOG(2) << "\t cloner got " << collection << endl; + BSONElement collectionOptions = collection["options"]; + if ( collectionOptions.isABSONObj() ) { + Status parseOptionsStatus = CollectionOptions().parse(collectionOptions.Obj()); + if ( !parseOptionsStatus.isOK() ) { + errmsg = str::stream() << "invalid collection options: " << collection + << ", reason: " << parseOptionsStatus.reason(); + return false; + } + } + BSONElement e = collection.getField("name"); if ( e.eoo() ) { string s = "bad system.namespaces object " + collection.toString(); |