From d2b8d990e6d970cf6f88e80b254682e05e9f44ad Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 14 Nov 2023 09:58:26 -0500 Subject: [PATCH] All exceptions filters are exempt from requiring a trusted source Related feedback: https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-7566154 --- src/js/scriptlet-filtering.js | 6 ++++-- src/js/static-filtering-parser.js | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/js/scriptlet-filtering.js b/src/js/scriptlet-filtering.js index 910905346..120e3f410 100644 --- a/src/js/scriptlet-filtering.js +++ b/src/js/scriptlet-filtering.js @@ -235,8 +235,10 @@ const normalizeRawFilter = function(parser, sourceIsTrusted = false) { if ( reng.aliases.has(token) ) { token = reng.aliases.get(token); } - if ( sourceIsTrusted !== true && reng.tokenRequiresTrust(token) ) { - return; + if ( parser.isException() !== true ) { + if ( sourceIsTrusted !== true ) { + if ( reng.tokenRequiresTrust(token) ) { return; } + } } args[0] = token.slice(0, -3); } diff --git a/src/js/static-filtering-parser.js b/src/js/static-filtering-parser.js index d8ea2767a..eeb7b5f1c 100644 --- a/src/js/static-filtering-parser.js +++ b/src/js/static-filtering-parser.js @@ -1481,7 +1481,7 @@ export class AstFilterParser { case NODE_TYPE_NET_OPTION_NAME_REPLACE: { realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount; if ( realBad ) { break; } - if ( this.options.trustedSource !== true ) { + if ( isException !== true && this.options.trustedSource !== true ) { this.astError = AST_ERROR_UNTRUSTED_SOURCE; realBad = true; break; @@ -1496,7 +1496,7 @@ export class AstFilterParser { case NODE_TYPE_NET_OPTION_NAME_URLTRANSFORM: realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount; if ( realBad ) { break; } - if ( this.options.trustedSource !== true ) { + if ( isException !== true && this.options.trustedSource !== true ) { this.astError = AST_ERROR_UNTRUSTED_SOURCE; realBad = true; break;