summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Rassi <rassi@10gen.com>2014-05-19 16:58:30 -0400
committerDan Pasette <dan@mongodb.com>2014-05-24 19:38:05 -0400
commit57bd9bd1d6f4903d78be8a8d106a2fae2a628be7 (patch)
tree29a788303d3af33cfd8994f3e49a28ebe072092f
parentc86d218c92820da50d97849af2c057498d6c7283 (diff)
downloadmongo-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.cpp10
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();