diff options
author | Randolph Tan <randolph@10gen.com> | 2017-04-14 14:18:43 -0400 |
---|---|---|
committer | Randolph Tan <randolph@10gen.com> | 2017-04-14 14:18:43 -0400 |
commit | 4fba56131ea6792acfc5d3a8fd20ad6d5efa6c3f (patch) | |
tree | 4e84a98b617c7b4df67dfd790e3ae0916d89eb49 | |
parent | ba845ee1671961566e42f1bd70e4637902720092 (diff) | |
download | mongo-4fba56131ea6792acfc5d3a8fd20ad6d5efa6c3f.tar.gz |
SERVER-28807 parseShardKeyPattern can leak for bad inputs
-rw-r--r-- | src/mongo/s/shard_key_pattern.cpp | 6 |
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) { |