Consider an empty pattern with anchors to be dubious

Related issue:
- https://github.com/ryanbr/fanboy-adblock/issues/1384
This commit is contained in:
Raymond Hill 2020-07-17 10:08:08 -04:00
parent 7b55f0fbf1
commit 3789259fc9
No known key found for this signature in database
GPG key ID: 25E1490B761470C2
2 changed files with 18 additions and 9 deletions

View file

@ -252,16 +252,16 @@ CodeMirror.defineMode('ubo-static-filtering', function() {
if ( parser.category === parser.CATComment ) {
return colorCommentSpan(stream);
}
if ( (parser.slices[parserSlot] & parser.BITIgnore) !== 0 ) {
stream.pos += parser.slices[parserSlot+2];
parserSlot += 3;
return 'comment';
}
if ( (parser.slices[parserSlot] & parser.BITError) !== 0 ) {
stream.pos += parser.slices[parserSlot+2];
parserSlot += 3;
return 'error';
}
if ( (parser.slices[parserSlot] & parser.BITIgnore) !== 0 ) {
stream.pos += parser.slices[parserSlot+2];
parserSlot += 3;
return 'comment';
}
if ( parser.category === parser.CATStaticExtFilter ) {
return colorExtSpan(stream);
}

View file

@ -636,7 +636,11 @@ const Parser = class {
this.toASCII(true) === false
)
) {
this.markSpan(this.patternSpan, BITError);
this.markSlices(
this.patternLeftAnchorSpan.i,
this.optionsAnchorSpan.i,
BITError
);
}
this.netOptionsIterator.init();
}
@ -908,12 +912,17 @@ const Parser = class {
// Examples of dubious filter content:
// - Spaces characters
// - Single character other than `*` wildcard
// - Zero-length pattern with anchors
// https://github.com/ryanbr/fanboy-adblock/issues/1384
patternIsDubious() {
return hasBits(this.patternBits, BITSpace) || (
this.patternBits !== BITAsterisk &&
this.optionsSpan.len === 0 &&
this.patternSpan.len === 3 &&
this.slices[this.patternSpan.i+2] === 1
this.optionsSpan.len === 0 && (
this.patternSpan.len === 0 &&
this.patternLeftAnchorSpan.len !== 0 ||
this.patternSpan.len === 3 &&
this.slices[this.patternSpan.i+2] === 1
)
);
}