Allow re-entrance in abort-current-inline-script

Related feedback:
- https://github.com/DandelionSprout/adfilt/issues/7#issuecomment-590391877

If a property is already trapped with a getter/setter,
propagate to these after validation succeed.
This commit is contained in:
Raymond Hill 2020-02-24 13:40:17 -05:00
parent 60348c4624
commit 034c915f3b
No known key found for this signature in database
GPG Key ID: 25E1490B761470C2
1 changed files with 10 additions and 3 deletions

View File

@ -56,12 +56,13 @@
if ( owner instanceof Object === false ) { return; }
}
let value;
const desc = Object.getOwnPropertyDescriptor(owner, prop);
let desc = Object.getOwnPropertyDescriptor(owner, prop);
if (
desc instanceof Object === false ||
desc.get instanceof Function === false
) {
value = owner[prop];
desc = undefined;
}
const magic = String.fromCharCode(Date.now() % 26 + 97) +
Math.floor(Math.random() * 982451653 + 982451653).toString(36);
@ -79,11 +80,17 @@
Object.defineProperty(owner, prop, {
get: function() {
validate();
return value;
return desc instanceof Object
? desc.get()
: value;
},
set: function(a) {
validate();
value = a;
if ( desc instanceof Object ) {
desc.set(a);
} else {
value = a;
}
}
});
const oe = window.onerror;