Merge pull request #525 from javascript-obfuscator/transform-object-keys-prohibited-host-fix

Additional fixes of `transformObjectKeys`
This commit is contained in:
Timofey Kachalov
2020-01-26 20:15:16 +03:00
committed by GitHub
8 changed files with 38 additions and 19 deletions
+3 -3
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "javascript-obfuscator",
"version": "0.24.0-rc.4",
"version": "0.24.0-rc.5",
"description": "JavaScript obfuscator",
"keywords": [
"obfuscator",
@@ -97,12 +97,12 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
if (identifierNamesSet.includes(node.name)) {
isReferencedIdentifierName = true;
}
return estraverse.VisitorOption.Break;
},
leave: (node: ESTree.Node): void | estraverse.VisitorOption => {
if (node === objectExpressionNode) {
isCurrentNode = false;
return estraverse.VisitorOption.Break;
}
}
});
+2 -11
View File
@@ -7,17 +7,8 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
`
function test() {
var foo;
return foo
? {
bar: foo.foo
}
: 1;
}
console.log(test());
var passthrough = value => value;
var foo = 1, bar = {baz: passthrough(foo)}
`,
{
...NO_ADDITIONAL_NODES_PRESET,
@@ -1698,5 +1698,31 @@ describe('ObjectExpressionKeysTransformer', () => {
});
});
});
describe('Variant #8: variable declarator identifier reference', () => {
const match: string = `` +
`var *passthrough *= *${variableMatch} *=> *${variableMatch};` +
`var foo *= *0x1, *bar *= *{'baz' *: *passthrough\\(foo\\)};` +
``;
const regExp: RegExp = new RegExp(match);
let obfuscatedCode: string;
before(() => {
const code: string = readFileAsString(__dirname + '/fixtures/variable-declarator-identifier-reference.js');
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
transformObjectKeys: true
}
).getObfuscatedCode();
});
it('shouldn ignore variable declarator object expression if it references other variable declarator identifier', () => {
assert.match(obfuscatedCode, regExp);
});
});
});
});
@@ -0,0 +1,2 @@
var passthrough = value => value;
var foo = 1, bar = {baz: passthrough(foo)}