From df7bedbe048c1fc9d7d99e2d639523fecf02f142 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Mon, 24 Oct 2022 09:08:50 -0400 Subject: [PATCH] Return punycoded hostname in static extended filtering --- src/js/cosmetic-filtering.js | 1 - src/js/static-filtering-parser.js | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/js/cosmetic-filtering.js b/src/js/cosmetic-filtering.js index 2c1d941cd..c677c8f2c 100644 --- a/src/js/cosmetic-filtering.js +++ b/src/js/cosmetic-filtering.js @@ -186,7 +186,6 @@ SelectorCacheEntry.junkyard = []; // Specific filers can be enforced before the main document is loaded. const FilterContainer = function() { - this.reHasUnicode = /[^\x00-\x7F]/; this.rePlainSelector = /^[#.][\w\\-]+/; this.rePlainSelectorEscaped = /^[#.](?:\\[0-9A-Fa-f]+ |\\.|\w|-)+/; this.rePlainSelectorEx = /^[^#.\[(]+([#.][\w-]+)|([#.][\w-]+)$/; diff --git a/src/js/static-filtering-parser.js b/src/js/static-filtering-parser.js index 0b47b0bf4..a0809953d 100644 --- a/src/js/static-filtering-parser.js +++ b/src/js/static-filtering-parser.js @@ -2984,6 +2984,12 @@ const ExtOptionsIterator = class { } if ( i === i0 ) { value.bad = true; } value.hn = parser.raw.slice(slices[i0+1], slices[i+1]); + if ( + hasBits(this.parser.allBits, BITUnicode) && + parser.reUnicodeChar.test(value.hn) + ) { + value.hn = parser.normalizeHostnameValue(value.hn, 0b0110); + } if ( i < this.r ) { i += 3; } this.l = i; return this;