Skip to content

Commit 1328828

Browse files
authored
Merge pull request moscajs#747 from mcollina/escape-mongo
escape pattern in mongo
2 parents e61f749 + 21ad292 commit 1328828

3 files changed

Lines changed: 6 additions & 1 deletion

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,5 @@ db
2626
profile-*
2727
.__*
2828
.idea
29+
30+
package-lock.json

lib/persistence/mongo.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ OTHER DEALINGS IN THE SOFTWARE.
2525
"use strict";
2626

2727
var AbstractPersistence = require("./abstract");
28+
var escape = require('escape-string-regexp');
2829
var mongo = require('mongodb');
2930
var MongoClient = mongo.MongoClient;
3031
var util = require("util");
@@ -267,7 +268,8 @@ MongoPersistence.prototype.storeRetained = function(packet, cb) {
267268
};
268269

269270
MongoPersistence.prototype.lookupRetained = function(pattern, cb) {
270-
var regexp = new RegExp(pattern.replace(/(#|\+)/, ".+").replace('\\', '\\\\'));
271+
var actual = escape(pattern).replace(/(#|\\\+).*$/, '');
272+
var regexp = new RegExp(actual);
271273
var stream = this._retained.find({ topic: { $regex: regexp } }).stream();
272274
var matched = [];
273275
var matcher = new Matcher();

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
"clone": "^1.0.2",
7575
"commander": "~2.9.0",
7676
"deepcopy": "^0.6.1",
77+
"escape-string-regexp": "^1.0.5",
7778
"extend": "^3.0.0",
7879
"json-buffer": "~2.0.11",
7980
"jsonschema": "^1.0.3",

0 commit comments

Comments
 (0)