summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandolph Tan <randolph@10gen.com>2017-04-14 14:18:43 -0400
committerRandolph Tan <randolph@10gen.com>2017-04-14 14:18:43 -0400
commit4fba56131ea6792acfc5d3a8fd20ad6d5efa6c3f (patch)
tree4e84a98b617c7b4df67dfd790e3ae0916d89eb49
parentba845ee1671961566e42f1bd70e4637902720092 (diff)
downloadmongo-4fba56131ea6792acfc5d3a8fd20ad6d5efa6c3f.tar.gz
SERVER-28807 parseShardKeyPattern can leak for bad inputs
-rw-r--r--src/mongo/s/shard_key_pattern.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mongo/s/shard_key_pattern.cpp b/src/mongo/s/shard_key_pattern.cpp
index f3454c31a62..53be53632ad 100644
--- a/src/mongo/s/shard_key_pattern.cpp
+++ b/src/mongo/s/shard_key_pattern.cpp
@@ -65,7 +65,7 @@ bool isHashedPatternEl(const BSONElement& el) {
* ii) a compound list of ascending, potentially-nested field paths, e.g. { a : 1 , b.c : 1 }
*/
std::vector<FieldRef*> parseShardKeyPattern(const BSONObj& keyPattern) {
- std::vector<FieldRef*> parsedPaths;
+ OwnedPointerVector<FieldRef> parsedPaths;
for (const auto& patternEl : keyPattern) {
auto newFieldRef(stdx::make_unique<FieldRef>(patternEl.fieldNameStringData()));
@@ -92,10 +92,10 @@ std::vector<FieldRef*> parseShardKeyPattern(const BSONObj& keyPattern) {
return {};
}
- parsedPaths.emplace_back(newFieldRef.release());
+ parsedPaths.push_back(newFieldRef.release());
}
- return parsedPaths;
+ return parsedPaths.release();
}
bool isShardKeyElement(const BSONElement& element, bool allowRegex) {