| Index: lib/filterClasses.js |
| =================================================================== |
| --- a/lib/filterClasses.js |
| +++ b/lib/filterClasses.js |
| @@ -80,17 +80,17 @@ |
| * @type Object |
| */ |
| Filter.knownFilters = Object.create(null); |
| /** |
| * Regular expression that element hiding filters should match |
| * @type RegExp |
| */ |
| -Filter.elemhideRegExp = /^([^\/\*\|\@"!]*?)#(\@)?(?:([\w\-]+|\*)((?:\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\))*)|#([^{}]+))$/; |
| +Filter.elemhideRegExp = /^([^\/\*\|\@"!]*?)#(\@)?(?:([\w\-]+|\*)((?:\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\))*)|#(.+))$/; |
| /** |
| * Regular expression that RegExp filters specified as RegExps should match |
| * @type RegExp |
| */ |
| Filter.regexpRegExp = /^(@@)?\/.*\/(?:\$~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)?$/; |
| /** |
| * Regular expression that options on a RegExp filter should match |
| * @type RegExp |
| @@ -821,17 +821,19 @@ |
| * @augments ActiveFilter |
| */ |
| function ElemHideBase(text, domains, selector) |
| { |
| ActiveFilter.call(this, text, domains || null); |
| if (domains) |
| this.selectorDomain = domains.replace(/,~[^,]+/g, "").replace(/^~[^,]+,?/, "").toLowerCase(); |
| - this.selector = selector; |
| + |
| + // Braces are being escaped to prevent CSS rule injection. |
| + this.selector = selector.replace("{", "\\x7B ").replace("}", "\\x7D "); |
| } |
| exports.ElemHideBase = ElemHideBase; |
| ElemHideBase.prototype = extend(ActiveFilter, { |
| /** |
| * @see ActiveFilter.domainSeparator |
| */ |
| domainSeparator: ",", |