@@ -54,29 +54,28 @@ AddShardRequest::AddShardRequest(ConnectionString connString)
5454
5555StatusWith<AddShardRequest> AddShardRequest::parseFromMongosCommand (const BSONObj& obj) {
5656 invariant (obj.nFields () >= 1 );
57-
58- auto firstElement = obj.firstElement ();
59- invariant (firstElement.type () == BSONType::String);
60- invariant (mongosAddShard.name () == firstElement.fieldNameStringData () ||
61- mongosAddShardDeprecated.name () == firstElement.fieldNameStringData ());
62-
57+ invariant (mongosAddShard.name () == obj.firstElement ().fieldNameStringData () ||
58+ mongosAddShardDeprecated.name () == obj.firstElement ().fieldNameStringData ());
6359 return parseInternalFields (obj);
6460}
6561
6662StatusWith<AddShardRequest> AddShardRequest::parseFromConfigCommand (const BSONObj& obj) {
6763 invariant (obj.nFields () >= 1 );
68-
69- auto firstElement = obj.firstElement ();
70- invariant (firstElement.type () == BSONType::String);
71- invariant (configsvrAddShard.name () == firstElement.fieldNameStringData ());
72-
64+ invariant (configsvrAddShard.name () == obj.firstElement ().fieldNameStringData ());
7365 return parseInternalFields (obj);
7466}
7567
7668StatusWith<AddShardRequest> AddShardRequest::parseInternalFields (const BSONObj& obj) {
7769 // required fields
7870
79- auto swConnString = ConnectionString::parse (obj.firstElement ().valuestrsafe ());
71+ auto firstElement = obj.firstElement ();
72+ if (firstElement.type () != BSONType::String) {
73+ return {ErrorCodes::FailedToParse,
74+ stream () << " The first argument to " << firstElement.fieldNameStringData ()
75+ << " must be a string" };
76+ }
77+
78+ auto swConnString = ConnectionString::parse (firstElement.valuestrsafe ());
8079 if (!swConnString.isOK ()) {
8180 return swConnString.getStatus ();
8281 }
0 commit comments