From dbe95c438b393f7f30e025af96221c9c0f5359f2 Mon Sep 17 00:00:00 2001 From: gorhill Date: Wed, 31 May 2017 11:49:37 -0400 Subject: [PATCH] fix #2666 --- src/js/reverselookup-worker.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/js/reverselookup-worker.js b/src/js/reverselookup-worker.js index 6663fe4ac..5bd120ce5 100644 --- a/src/js/reverselookup-worker.js +++ b/src/js/reverselookup-worker.js @@ -30,14 +30,6 @@ var listEntries = Object.create(null), /******************************************************************************/ -// Helpers - -var reEscape = function(s) { - return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); -}; - -/******************************************************************************/ - var fromNetFilter = function(details) { var lists = [], compiledFilter = details.compiledFilter, @@ -108,11 +100,10 @@ var fromCosmeticFilter = function(details) { prefix = match[0], filter = details.rawFilter.slice(prefix.length); - var compiled = JSON.stringify(filter).slice(1, -1), - reFilter = new RegExp( - '(?:^|\\n)[^\\n]*?("|\\")?' + - reEscape(compiled) + - '\\1[^\\n]*?(?:\\n|$)', + var reFilter = new RegExp( + '(?:^|\\n)[^\\n]*?\\\\*"' + + reEscapeCosmetic(filter) + + '\\\\*"[^\\n]*?(?:\\n|$)', 'g' ); @@ -204,6 +195,15 @@ var fromCosmeticFilter = function(details) { }); }; +// https://github.com/gorhill/uBlock/issues/2666 +// Raw filters in compiled filter lists may have been JSON-stringified one or +// multiple times. + +var reEscapeCosmetic = function(s) { + return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + .replace(/"/g, '\\\\*"'); +}; + /******************************************************************************/ onmessage = function(e) { // jshint ignore:line