From f3bcd4ba300fb3100bc84d2f17b686f643347055 Mon Sep 17 00:00:00 2001 From: detlef Date: Sun, 9 Feb 2020 11:16:02 +0100 Subject: [PATCH 1/9] - minor changes with some disabling to get generate.js and testcase.js run --- esbuilder/jsbuilder.js | 14 ++++++++------ espath/lib/path-manager.js | 4 ++-- espath/lib/path.js | 6 +++++- generator.js | 5 ++++- node_modules/.bin/escodegen | 0 node_modules/.bin/esgenerate | 0 node_modules/escodegen/bin/escodegen.js | 0 node_modules/escodegen/bin/esgenerate.js | 0 node_modules/escodegen/escodegen.js | 3 +-- node_modules/escodegen/package.json | 16 +++++++++------- page.json | 2 +- 11 files changed, 30 insertions(+), 20 deletions(-) mode change 100644 => 120000 node_modules/.bin/escodegen mode change 100644 => 120000 node_modules/.bin/esgenerate mode change 100644 => 100755 node_modules/escodegen/bin/escodegen.js mode change 100644 => 100755 node_modules/escodegen/bin/esgenerate.js diff --git a/esbuilder/jsbuilder.js b/esbuilder/jsbuilder.js index 7d98898..917526a 100644 --- a/esbuilder/jsbuilder.js +++ b/esbuilder/jsbuilder.js @@ -8,6 +8,11 @@ var rawValue = require('./raw'); var variable = require('./variable').default; var reference = require('./reference'); +//require('../espath/lib/path'); + +var ValueInfo = require('../espath/lib/path').valueinfo; +var ValueType = require('../espath/lib/path').valuetype; +var ValueMap = require('../espath/lib/path').valuemap; var definition = require('./definition'); var PatternVisitor = require('./pattern-visitor').default; @@ -1566,17 +1571,14 @@ class Builder extends esbuilder.Builder{ break; } - if(this.state.needProperty && parent.type == estraverse.Syntax.MemberExpression){ - /** - * - */ + /**if(this.state.needProperty && parent.type == estraverse.Syntax.MemberExpression){ console.log(parent); console.log(parent.object); let objValuetype = this.pathManager.acquire(parent.object)._valueType; var valueinfo = this.currentValueTable().get(objValuetype.getSymIndex(0x74)); node.name = random.randomElement([...valueinfo.getProps().keys()]); break; - } + }*/ if(this.state.needObject && parent.type == estraverse.Syntax.MemberExpression){ var visitied = []; @@ -2535,4 +2537,4 @@ class Builder extends esbuilder.Builder{ } -exports.default = Builder; \ No newline at end of file +exports.default = Builder; diff --git a/espath/lib/path-manager.js b/espath/lib/path-manager.js index 6bdb713..1d6a8a6 100644 --- a/espath/lib/path-manager.js +++ b/espath/lib/path-manager.js @@ -364,7 +364,7 @@ class PathManager{ classType = new ValueInfo(0x0040); for(let method of node.body){ console.log(method); - if(/Identifier/.test(method.key.type)){ + if(method.key && /Identifier/.test(method.key.type)){ classType.__props.set(method.key.name, this.acquire(method)._valueType);//this.__currentValueMap.get(property.key.name)); } } @@ -374,7 +374,7 @@ class PathManager{ valuetype = new ValueType(0x0040,["classType"+(this.__valueTable.size-1)]); for(let method of node.body){ - if(/Identifier/.test(method.key.type)){ + if(method.key && /Identifier/.test(method.key.type)){ this.__currentValueMap.delete(method.key.name); } } diff --git a/espath/lib/path.js b/espath/lib/path.js index e1485fc..a239a5e 100644 --- a/espath/lib/path.js +++ b/espath/lib/path.js @@ -136,11 +136,13 @@ class ValueMap extends Map{ super(); if(src){ for(let [k, vtype] of src){ + if (vtype) { let newType = new ValueType(vtype.__type, vtype.__symIndex); this.set(k,newType); } } } + } /** * @@ -366,10 +368,12 @@ class ValueType{ * merge the two types */ update(type){ + if (type) { this.updateType(type.__type); if(type.__symIndex) this.updateSymIndex(type.__symIndex); else{} // do nothing + } } setType(_type){ @@ -421,4 +425,4 @@ class ValueType{ module.exports.path = Path; module.exports.valueinfo = ValueInfo; module.exports.valuetype = ValueType; -module.exports.valuemap = ValueMap; \ No newline at end of file +module.exports.valuemap = ValueMap; diff --git a/generator.js b/generator.js index cd142f5..ca56f88 100644 --- a/generator.js +++ b/generator.js @@ -246,8 +246,11 @@ TrimStackTracePath = function(){}; ` var preSrcAst = esprima.parse(preSrc).body; +//for (var i=0;i<10;i++) +// testMutate(); +//return; -var ast = JSON.parse(raw); +var ast = esprima.parse(raw); ast.body = preSrcAst.concat(ast.body); diff --git a/node_modules/.bin/escodegen b/node_modules/.bin/escodegen deleted file mode 100644 index 01a7c32..0000000 --- a/node_modules/.bin/escodegen +++ /dev/null @@ -1 +0,0 @@ -../escodegen/bin/escodegen.js \ No newline at end of file diff --git a/node_modules/.bin/escodegen b/node_modules/.bin/escodegen new file mode 120000 index 0000000..01a7c32 --- /dev/null +++ b/node_modules/.bin/escodegen @@ -0,0 +1 @@ +../escodegen/bin/escodegen.js \ No newline at end of file diff --git a/node_modules/.bin/esgenerate b/node_modules/.bin/esgenerate deleted file mode 100644 index 7d0293e..0000000 --- a/node_modules/.bin/esgenerate +++ /dev/null @@ -1 +0,0 @@ -../escodegen/bin/esgenerate.js \ No newline at end of file diff --git a/node_modules/.bin/esgenerate b/node_modules/.bin/esgenerate new file mode 120000 index 0000000..7d0293e --- /dev/null +++ b/node_modules/.bin/esgenerate @@ -0,0 +1 @@ +../escodegen/bin/esgenerate.js \ No newline at end of file diff --git a/node_modules/escodegen/bin/escodegen.js b/node_modules/escodegen/bin/escodegen.js old mode 100644 new mode 100755 diff --git a/node_modules/escodegen/bin/esgenerate.js b/node_modules/escodegen/bin/esgenerate.js old mode 100644 new mode 100755 diff --git a/node_modules/escodegen/escodegen.js b/node_modules/escodegen/escodegen.js index beb291b..9208803 100644 --- a/node_modules/escodegen/escodegen.js +++ b/node_modules/escodegen/escodegen.js @@ -1794,8 +1794,7 @@ result.push(',' + space); } } - // return parenthesize(result, Precedence.Sequence, precedence); - return parenthesize(result, Precedence.Sequence, 1); + return parenthesize(result, Precedence.Sequence, precedence); }, AssignmentExpression: function (expr, precedence, flags) { diff --git a/node_modules/escodegen/package.json b/node_modules/escodegen/package.json index 2ec61af..6af67fe 100644 --- a/node_modules/escodegen/package.json +++ b/node_modules/escodegen/package.json @@ -6,14 +6,14 @@ "_location": "/escodegen", "_phantomChildren": {}, "_requested": { - "type": "range", - "registry": true, - "raw": "escodegen@^1.11.0", - "name": "escodegen", "escapedName": "escodegen", + "fetchSpec": "^1.11.0", + "name": "escodegen", + "raw": "escodegen@^1.11.0", "rawSpec": "^1.11.0", + "registry": true, "saveSpec": null, - "fetchSpec": "^1.11.0" + "type": "range" }, "_requiredBy": [ "#USER", @@ -24,8 +24,8 @@ "_spec": "escodegen@^1.11.0", "_where": "/Users/android/Project/ASTFuzz", "bin": { - "esgenerate": "./bin/esgenerate.js", - "escodegen": "./bin/escodegen.js" + "escodegen": "./bin/escodegen.js", + "esgenerate": "./bin/esgenerate.js" }, "bugs": { "url": "https://github.com/estools/escodegen/issues" @@ -75,6 +75,8 @@ "optionalDependencies": { "source-map": "~0.6.1" }, + "readme": "## Escodegen\n[![npm version](https://badge.fury.io/js/escodegen.svg)](http://badge.fury.io/js/escodegen)\n[![Build Status](https://secure.travis-ci.org/estools/escodegen.svg)](http://travis-ci.org/estools/escodegen)\n[![Dependency Status](https://david-dm.org/estools/escodegen.svg)](https://david-dm.org/estools/escodegen)\n[![devDependency Status](https://david-dm.org/estools/escodegen/dev-status.svg)](https://david-dm.org/estools/escodegen#info=devDependencies)\n\nEscodegen ([escodegen](http://github.com/estools/escodegen)) is an\n[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)\n(also popularly known as [JavaScript](http://en.wikipedia.org/wiki/JavaScript))\ncode generator from [Mozilla's Parser API](https://developer.mozilla.org/en/SpiderMonkey/Parser_API)\nAST. See the [online generator](https://estools.github.io/escodegen/demo/index.html)\nfor a demo.\n\n\n### Install\n\nEscodegen can be used in a web browser:\n\n \n\nescodegen.browser.js can be found in tagged revisions on GitHub.\n\nOr in a Node.js application via npm:\n\n npm install escodegen\n\n### Usage\n\nA simple example: the program\n\n escodegen.generate({\n type: 'BinaryExpression',\n operator: '+',\n left: { type: 'Literal', value: 40 },\n right: { type: 'Literal', value: 2 }\n });\n\nproduces the string `'40 + 2'`.\n\nSee the [API page](https://github.com/estools/escodegen/wiki/API) for\noptions. To run the tests, execute `npm test` in the root directory.\n\n### Building browser bundle / minified browser bundle\n\nAt first, execute `npm install` to install the all dev dependencies.\nAfter that,\n\n npm run-script build\n\nwill generate `escodegen.browser.js`, which can be used in browser environments.\n\nAnd,\n\n npm run-script build-min\n\nwill generate the minified file `escodegen.browser.min.js`.\n\n### License\n\n#### Escodegen\n\nCopyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation)\n (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "readmeFilename": "README.md", "repository": { "type": "git", "url": "git+ssh://git@github.com/estools/escodegen.git" diff --git a/page.json b/page.json index 17829ad..acf310b 100644 --- a/page.json +++ b/page.json @@ -1 +1 @@ -{"type":"Program","body":[{"type":"VariableDeclaration","kind":"var","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_0","mutated":true},"init":{"type":"Literal","value":false,"mutated":true},"mutated":true},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_1","mutated":true},"init":{"type":"Literal","value":"4p%*'kJKe","mutated":true},"mutated":true},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_2","mutated":true},"init":{"type":"Literal","value":"rG%GqC1C<","mutated":true},"mutated":true},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_3","mutated":true},"init":{"type":"Literal","value":0.788369,"mutated":true},"mutated":true},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_4","mutated":true},"init":null,"mutated":true},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_5","mutated":true},"init":{"type":"Literal","value":"i{","mutated":true},"mutated":true}],"mutated":true},{"type":"VariableDeclaration","kind":"var","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_6","mutated":true},"init":{"type":"Literal","value":"8d6XUhG@oso%`~F';nclD`,zNf","mutated":true},"mutated":true}],"mutated":true},{"type":"FunctionDeclaration","async":false,"generator":false,"id":{"type":"Identifier","name":"func_0","mutated":true},"params":[{"type":"AssignmentPattern","right":{"type":"BinaryExpression","operator":"!==","left":{"type":"Identifier","name":"var_1","mutated":true},"right":{"type":"Identifier","name":"var_6","mutated":true},"mutated":true},"left":{"type":"Identifier","name":"param_0","mutated":true},"operator":"=","mutated":true},{"type":"AssignmentPattern","right":{"type":"BinaryExpression","operator":"!==","left":{"type":"Identifier","name":"var_1","mutated":true},"right":{"type":"Identifier","name":"var_2","mutated":true},"mutated":true},"left":{"type":"Identifier","name":"param_1","mutated":true},"operator":"=","mutated":true}],"body":{"type":"BlockStatement","body":[{"type":"EmptyStatement","mutated":true},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":true,"object":{"type":"BinaryExpression","operator":"-","left":{"type":"Identifier","name":"var_2","mutated":true},"right":{"type":"ArrayExpression","elements":[{"type":"Identifier","name":"var_5","mutated":true},{"type":"Identifier","name":"var_5","mutated":true},{"type":"UpdateExpression","argument":{"type":"Identifier","name":"var_2","mutated":true},"operator":"--","prefix":false,"mutated":true},{"type":"UpdateExpression","argument":{"type":"Identifier","name":"var_5","mutated":true},"operator":"++","prefix":true,"mutated":true},{"type":"ArrowFunctionExpression","async":false,"generator":false,"id":null,"params":[],"body":{"type":"BlockStatement","body":[{"type":"EmptyStatement","mutated":true}],"mutated":true},"mutated":true}],"mutated":true},"mutated":true},"property":{"type":"AssignmentExpression","left":{"type":"Identifier","name":"param_0","mutated":true},"right":{"type":"Literal","value":"k)oD","mutated":true},"operator":"^=","mutated":true},"mutated":true},"arguments":[],"mutated":true},"mutated":true}],"mutated":true},"mutated":true},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","argument":{"type":"Identifier","name":"func_0","mutated":true},"operator":"~","mutated":true},"mutated":true}],"mutated":true} \ No newline at end of file +{"type":"Program","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x1"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"prop_x1"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"prop_x2"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"prop_x3"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"prop_x4"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x2"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1,"raw":"1"},{"type":"Literal","value":2,"raw":"2"},{"type":"Literal","value":3,"raw":"3"},{"type":"Literal","value":4,"raw":"4"},{"type":"Literal","value":5,"raw":"5"},{"type":"Literal","value":6,"raw":"6"},{"type":"Literal","value":7,"raw":"7"}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x3"},"init":{"type":"ArrayExpression","elements":[{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x4"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1.1,"raw":"1.1"},{"type":"Literal","value":2.2,"raw":"2.2"},{"type":"Literal","value":3.3,"raw":"3.3"},{"type":"Literal","value":4.4,"raw":"4.4"},{"type":"Literal","value":5.5,"raw":"5.5"}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x5"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1,"raw":"1"},{"type":"Literal","value":2,"raw":"2"},{"type":"Literal","value":3,"raw":"3"},{"type":"Literal","value":4,"raw":"4"},{"type":"Literal","value":5,"raw":"5"},{"type":"Literal","value":6,"raw":"6"},{"type":"Literal","value":7,"raw":"7"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","argument":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x5"},"property":{"type":"Literal","value":3,"raw":"3"}},"prefix":true}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x6"},"init":{"type":"ArrayExpression","elements":[{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","argument":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x6"},"property":{"type":"Literal","value":3,"raw":"3"}},"prefix":true}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x7"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1.1,"raw":"1.1"},{"type":"Literal","value":2.2,"raw":"2.2"},{"type":"Literal","value":3.3,"raw":"3.3"},{"type":"Literal","value":4.4,"raw":"4.4"},{"type":"Literal","value":5.5,"raw":"5.5"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","argument":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x7"},"property":{"type":"Literal","value":3,"raw":"3"}},"prefix":true}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x8"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"NewExpression","callee":{"type":"Identifier","name":"Array"},"arguments":[{"type":"Literal","value":10,"raw":"10"}]},"property":{"type":"Identifier","name":"fill"}},"arguments":[{"type":"Literal","value":0,"raw":"0"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x8"},"property":{"type":"Identifier","name":"length"}},"right":{"type":"Literal","value":100,"raw":"100"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x9"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"NewExpression","callee":{"type":"Identifier","name":"Array"},"arguments":[{"type":"Literal","value":10,"raw":"10"}]},"property":{"type":"Identifier","name":"fill"}},"arguments":[{"type":"ArrayExpression","elements":[]}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x9"},"property":{"type":"Identifier","name":"length"}},"right":{"type":"Literal","value":100,"raw":"100"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x10"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"NewExpression","callee":{"type":"Identifier","name":"Array"},"arguments":[{"type":"Literal","value":10,"raw":"10"}]},"property":{"type":"Identifier","name":"fill"}},"arguments":[{"type":"Literal","value":1.1,"raw":"1.1"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x10"},"property":{"type":"Identifier","name":"length"}},"right":{"type":"Literal","value":100,"raw":"100"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x11"},"init":{"type":"ObjectExpression","properties":[]}}],"kind":"var"},{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"interestContol"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":5,"raw":"5"}}],"kind":"let"},"test":{"type":"BinaryExpression","operator":"<","left":{"type":"Identifier","name":"i"},"right":{"type":"Literal","value":133,"raw":"133"}},"update":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"i"},"prefix":false},"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x11"},"property":{"type":"BinaryExpression","operator":"+","left":{"type":"Literal","value":"prop_x","raw":"'prop_x'"},"right":{"type":"Identifier","name":"i"}}},"right":{"type":"Literal","value":1,"raw":"1"}}},{"type":"IfStatement","test":{"type":"BinaryExpression","operator":"<","left":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"interestContol"},"prefix":false},"right":{"type":"Literal","value":10000,"raw":"10000"}},"consequent":{"type":"BreakStatement","label":null},"alternate":null}]}}]},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x12"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"prop_x133"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"prop_x134"},"computed":false,"value":{"type":"Literal","value":2,"raw":"2"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x12"},"property":{"type":"Identifier","name":"prop_x135"}},"right":{"type":"Literal","value":1,"raw":"1"}}},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","argument":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x12"},"property":{"type":"Identifier","name":"prop_x133"}},"prefix":true}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x13"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":0,"raw":"0"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x13"},"property":{"type":"Literal","value":256,"raw":"256"}},"right":{"type":"Literal","value":1,"raw":"1"}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x13"},"property":{"type":"Literal","value":4096,"raw":"4096"}},"right":{"type":"Literal","value":2,"raw":"2"}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x13"},"property":{"type":"Literal","value":65536,"raw":"65536"}},"right":{"type":"Literal","value":3,"raw":"3"}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x13"},"property":{"type":"Literal","value":1048576,"raw":"1048576"}},"right":{"type":"Literal","value":3,"raw":"3"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"__proto__"},"init":{"type":"ArrayExpression","elements":[]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x14"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"__proto__"},"computed":false,"value":{"type":"Identifier","name":"__proto__"},"kind":"init","method":false,"shorthand":true}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c1"},"init":{"type":"Literal","value":1,"raw":"1"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c2"},"init":{"type":"Literal","value":1.1,"raw":"1.1"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c3"},"init":{"type":"Literal","value":2147483647,"raw":"2147483647"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c4"},"init":{"type":"Literal","value":4294967295,"raw":"4294967295"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c5"},"init":{"type":"Literal","value":2147647490,"raw":"2147647490"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c6"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c7"},"init":{"type":"Literal","value":1073741823,"raw":"1073741823"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c8"},"init":{"type":"Literal","value":18446744073709552000,"raw":"18446744073709552000"}}],"kind":"var"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x0"},"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x1"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x1"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x2"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x2"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x3"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x3"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x4"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x4"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x5"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x5"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x6"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x6"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"print"},"init":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"a"}],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"BinaryExpression","operator":"+","left":{"type":"Identifier","name":"a"},"right":{"type":"Literal","value":"","raw":"''"}}}]},"generator":false,"expression":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"alert"},"init":{"type":"Identifier","name":"print"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"console"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"log"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"readbuffer"},"init":{"type":"Identifier","name":"print"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"printObj"},"init":{"type":"Identifier","name":"print"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"WScript"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"Echo"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"LoadScriptFile"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Arguments"},"computed":false,"value":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1,"raw":"1"},{"type":"Literal","value":2,"raw":"2"},{"type":"Literal","value":3,"raw":"3"},{"type":"Literal","value":4,"raw":"4"},{"type":"Literal","value":5,"raw":"5"},{"type":"Literal","value":6,"raw":"6"},{"type":"Literal","value":7,"raw":"7"},{"type":"Literal","value":8,"raw":"8"}]},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Platform"},"computed":false,"value":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"BUILD_TYPE"},"computed":false,"value":{"type":"Literal","value":"release","raw":"'release'"},"kind":"init","method":false,"shorthand":false}]},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"LoadModule"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"s"}],"body":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"eval"},"arguments":[{"type":"Identifier","name":"s"}]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"e"},"body":{"type":"BlockStatement","body":[]}},"finalizer":null}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"LoadScript"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"s"}],"body":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"eval"},"arguments":[{"type":"Identifier","name":"s"}]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"e"},"body":{"type":"BlockStatement","body":[]}},"finalizer":null}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"RegisterCrossThreadInterfacePS"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"RegisterModuleSource"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Flag"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Attach"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"SetTimeout"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Quit"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"DumpFunctionPosition"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"testRunner"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"runTests"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"tests"}],"body":{"type":"BlockStatement","body":[{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":null}],"kind":"let"},"right":{"type":"Identifier","name":"tests"},"body":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"tests"},"property":{"type":"Identifier","name":"i"}},"property":{"type":"Identifier","name":"body"}},"arguments":[]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"e"},"body":{"type":"BlockStatement","body":[]}},"finalizer":null}]},"each":false}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"run"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"tests"}],"body":{"type":"BlockStatement","body":[{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":null}],"kind":"let"},"right":{"type":"Identifier","name":"tests"},"body":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"tests"},"property":{"type":"Identifier","name":"i"}},"property":{"type":"Identifier","name":"body"}},"arguments":[]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"e"},"body":{"type":"BlockStatement","body":[]}},"finalizer":null}]},"each":false}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"assert"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"strictEqual"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"areEqual"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"areNotEqual"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"areAlmostEqual"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isTrue"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isFalse"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isUndefined"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isNotUndefined"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"throws"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"doesNotThrow"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"fail"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"matches"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"helpers"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"isInBrowser"},"computed":false,"value":{"type":"Literal","value":false,"raw":"false"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isCompatVersion9"},"computed":false,"value":{"type":"Literal","value":false,"raw":"false"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isVersion10OrLater"},"computed":false,"value":{"type":"Literal","value":true,"raw":"true"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"getDummyObject"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"ObjectExpression","properties":[]}}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"writeln"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"printObject"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"withPropertyDeleted"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"getTypeOf"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"getFileAndLineInfo"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"CollectGarbage"},"init":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"interestContol"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"interestContol"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"let"},"test":{"type":"BinaryExpression","operator":"<","left":{"type":"Identifier","name":"i"},"right":{"type":"Literal","value":1000,"raw":"1000"}},"update":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"i"},"prefix":false},"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ab"},"init":{"type":"NewExpression","callee":{"type":"Identifier","name":"ArrayBuffer"},"arguments":[{"type":"Literal","value":4096,"raw":"4096"}]}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","operator":"<","left":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"interestContol"},"prefix":false},"right":{"type":"Literal","value":10000,"raw":"10000"}},"consequent":{"type":"BreakStatement","label":null},"alternate":null},{"type":"IfStatement","test":{"type":"BinaryExpression","operator":"<","left":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"interestContol"},"prefix":false},"right":{"type":"Literal","value":10000,"raw":"10000"}},"consequent":{"type":"BreakStatement","label":null},"alternate":null}]}}]}]},"generator":false,"expression":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"gc"},"init":{"type":"Identifier","name":"CollectGarbage"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"TrimStackTracePath"},"init":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"BinaryExpression","operator":"+","left":{"type":"Literal","value":4269,"raw":"4269"},"right":{"type":"Literal","value":48879,"raw":"48879"}}},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"test0"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"leaf"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Literal","value":100,"raw":"100"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"obj1"},"init":{"type":"ObjectExpression","properties":[]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"arrObj0"},"init":{"type":"ObjectExpression","properties":[]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"func0"},"init":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"argMath0"},{"type":"Identifier","name":"argArr1"},{"type":"Identifier","name":"argObj2"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"__loopvar16"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"WhileStatement","test":{"type":"LogicalExpression","operator":"&&","left":{"type":"Literal","value":1,"raw":"1"},"right":{"type":"BinaryExpression","operator":"<","left":{"type":"Identifier","name":"__loopvar16"},"right":{"type":"Literal","value":3,"raw":"3"}}},"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"__loopvar16"},"prefix":false}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"argArr1"},"property":{"type":"BinaryExpression","operator":"&","left":{"type":"ConditionalExpression","test":{"type":"BinaryExpression","operator":">=","left":{"type":"BinaryExpression","operator":"%","left":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"leaf"},"property":{"type":"Identifier","name":"call"}},"arguments":[{"type":"Identifier","name":"argObj2"}]},"right":{"type":"ConditionalExpression","test":{"type":"Literal","value":0,"raw":"0"},"consequent":{"type":"Literal","value":2147483647,"raw":"2147483647"},"alternate":{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":7335274600096260000,"raw":"7.33527460009626E+18"},"prefix":true}}},"right":{"type":"Literal","value":0,"raw":"0"}},"consequent":{"type":"BinaryExpression","operator":"%","left":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"leaf"},"property":{"type":"Identifier","name":"call"}},"arguments":[{"type":"Identifier","name":"argObj2"}]},"right":{"type":"ConditionalExpression","test":{"type":"Literal","value":0,"raw":"0"},"consequent":{"type":"Literal","value":2147483647,"raw":"2147483647"},"alternate":{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":7335274600096260000,"raw":"7.33527460009626E+18"},"prefix":true}}},"alternate":{"type":"Literal","value":0,"raw":"0"}},"right":{"type":"Literal","value":15,"raw":"0XF"}}},"right":{"type":"UpdateExpression","operator":"--","argument":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"obj1"},"property":{"type":"Identifier","name":"prop0"}},"prefix":true}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"*=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"obj1"},"property":{"type":"Identifier","name":"length"}},"right":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"argArr1"},"property":{"type":"Literal","value":16,"raw":"16"}}}}]}}]},"generator":false,"expression":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ui16"},"init":{"type":"NewExpression","callee":{"type":"Identifier","name":"Uint16Array"},"arguments":[{"type":"Literal","value":256,"raw":"256"}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"intary"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":4,"raw":"4"},{"type":"Literal","value":66,"raw":"66"},{"type":"Literal","value":767,"raw":"767"},{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":100,"raw":"100"},"prefix":true},{"type":"Literal","value":0,"raw":"0"},{"type":"Literal","value":1213,"raw":"1213"},{"type":"Literal","value":34,"raw":"34"},{"type":"Literal","value":42,"raw":"42"},{"type":"Literal","value":55,"raw":"55"},{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":123,"raw":"123"},"prefix":true},{"type":"Literal","value":567,"raw":"567"},{"type":"Literal","value":77,"raw":"77"},{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":234,"raw":"234"},"prefix":true},{"type":"Literal","value":88,"raw":"88"},{"type":"Literal","value":11,"raw":"11"},{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":66,"raw":"66"},"prefix":true}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"__loopvar1"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"strvar0"},"init":null}],"kind":"var"},"right":{"type":"Identifier","name":"ui16"},"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","operator":"!=","left":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"strvar0"},"property":{"type":"Identifier","name":"indexOf"}},"arguments":[{"type":"Literal","value":"method","raw":"'method'"}]},"right":{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":1,"raw":"1"},"prefix":true}},"consequent":{"type":"ContinueStatement","label":null},"alternate":null},{"type":"IfStatement","test":{"type":"BinaryExpression","operator":">","left":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"__loopvar1"},"prefix":false},"right":{"type":"Literal","value":3,"raw":"3"}},"consequent":{"type":"BreakStatement","label":null},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"obj1"},"property":{"type":"Identifier","name":"prop0"}},"right":{"type":"Literal","value":1,"raw":"1"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"__loopvar3"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"DoWhileStatement","body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"__loopvar3"},"prefix":false}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"obj1"},"property":{"type":"Identifier","name":"prop0"}},"right":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"func0"},"property":{"type":"Identifier","name":"call"}},"arguments":[{"type":"Identifier","name":"obj1"},{"type":"Literal","value":1,"raw":"1"},{"type":"Identifier","name":"intary"},{"type":"Literal","value":1,"raw":"1"}]}}}]},"test":{"type":"LogicalExpression","operator":"&&","left":{"type":"Literal","value":1,"raw":"1"},"right":{"type":"BinaryExpression","operator":"<","left":{"type":"Identifier","name":"__loopvar3"},"right":{"type":"Literal","value":3,"raw":"3"}}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"intary"},"property":{"type":"Literal","value":18,"raw":"18"}},"right":{"type":"UpdateExpression","operator":"--","argument":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"arrObj0"},"property":{"type":"Identifier","name":"length"}},"prefix":false}}}]},"each":false}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"test0"},"arguments":[]}},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"test0"},"arguments":[]}},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"test0"},"arguments":[]}}],"sourceType":"script"} \ No newline at end of file From 436ab29eb47bd4dcd41bc256c048f75caa06cdc7 Mon Sep 17 00:00:00 2001 From: detlef Date: Sun, 9 Feb 2020 16:07:06 +0100 Subject: [PATCH 2/9] - tools for SHM support of gecko engine patched as fuzzilli --- SHM_TEST_get.c | 62 ++++++++++++++++++++++++++++++++ SHM_TEST_set.c | 74 ++++++++++++++++++++++++++++++++++++++ espath/lib/path-manager.js | 20 ++++++----- page.json | 1 - testcase.js | 30 ++++++++++++---- 5 files changed, 172 insertions(+), 15 deletions(-) create mode 100644 SHM_TEST_get.c create mode 100644 SHM_TEST_set.c delete mode 100644 page.json diff --git a/SHM_TEST_get.c b/SHM_TEST_get.c new file mode 100644 index 0000000..d3cfb5d --- /dev/null +++ b/SHM_TEST_get.c @@ -0,0 +1,62 @@ +//compile with gcc -o SHM_TEST_get SHM_TEST_get.c -lrt + +#include +#include +#include +#include +#include +#include +#include + +#define STORAGE_ID "/SHM_TEST" +#define STORAGE_SIZE 0x100000 + +struct shmem_data { + uint32_t num_edges; + unsigned char edges[]; +}; + + +int main(int argc, char *argv[]) +{ + int res; + int fd; + char data[STORAGE_SIZE]; + struct shmem_data* data1; + pid_t pid; + void *addr; + + pid = getpid(); + + // get shared memory file descriptor (NOT a file) + fd = shm_open(STORAGE_ID, O_RDONLY, S_IRUSR | S_IWUSR); + if (fd == -1) + { + perror("open"); + return 10; + } + + // map shared memory to process address space + addr = mmap(NULL, STORAGE_SIZE, PROT_READ, MAP_SHARED, fd, 0); + if (addr == MAP_FAILED) + { + perror("mmap"); + return 30; + } + + // place data into memory + //memcpy(data, addr, STORAGE_SIZE); + data1 = addr; + int counter=0; + printf("Size %u\n", (*data1).num_edges); + for (int i=0;inum_edges;i++) { + if (0 != data1->edges[i / 8] && (1 << (i % 8))) { + //printf("cov\n"); + counter++; + } + //else + // printf("-\n"); + } + printf(" %d / %u --> %6.2f\n",counter,data1->num_edges,100.0 * counter / data1->num_edges ); + return 0; +} diff --git a/SHM_TEST_set.c b/SHM_TEST_set.c new file mode 100644 index 0000000..6cd4e80 --- /dev/null +++ b/SHM_TEST_set.c @@ -0,0 +1,74 @@ +//compile with gcc -o SHM_TEST_set SHM_TEST_set.c -lrt + + +#include +#include +#include +#include +#include + +#define STORAGE_ID "/SHM_TEST" +#define STORAGE_SIZE 0x100000 +#define DATA "Hello, World! From PID %d 0000000000000" + +int main(int argc, char *argv[]) +{ + int res; + int fd; + int len; + pid_t pid; + void *addr; + char data[STORAGE_SIZE]; + + pid = getpid(); + sprintf(data, DATA, pid); + + // get shared memory file descriptor (NOT a file) + fd = shm_open(STORAGE_ID, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); + if (fd == -1) + { + perror("open"); + return 10; + } + + // extend shared memory object as by default it's initialized with size 0 + res = ftruncate(fd, STORAGE_SIZE); + if (res == -1) + { + perror("ftruncate"); + return 20; + } + + // map shared memory to process address space + addr = mmap(NULL, STORAGE_SIZE, PROT_WRITE, MAP_SHARED, fd, 0); + if (addr == MAP_FAILED) + { + perror("mmap"); + return 30; + } + + // place data into memory + len = strlen(data) + 1; + memcpy(addr, data, STORAGE_SIZE); + + // wait for someone to read it + sleep(2000); + + // mmap cleanup + res = munmap(addr, STORAGE_SIZE); + if (res == -1) + { + perror("munmap"); + return 40; + } + + // shm_open cleanup + fd = shm_unlink(STORAGE_ID); + if (fd == -1) + { + perror("unlink"); + return 100; + } + + return 0; +} diff --git a/espath/lib/path-manager.js b/espath/lib/path-manager.js index 1d6a8a6..0d6c582 100644 --- a/espath/lib/path-manager.js +++ b/espath/lib/path-manager.js @@ -148,8 +148,10 @@ class PathManager{ __updateValueMap(node, path){ var objPath; objPath = this.acquire(node.object); - for(let prop of this.__valueTable.get(objPath._valueType.__symIndex).__props){ - path.valueMap.set(prop[0],prop[1]); + if (objPath._valueType) { + for(let prop of this.__valueTable.get(objPath._valueType.__symIndex).__props){ + path.valueMap.set(prop[0],prop[1]); + } } } @@ -528,7 +530,7 @@ class PathManager{ case "MemberExpression": let objPath = this.acquire(node.left.object); let propPath = this.acquire(node.left.property); - if(objPath._valueType.__type >= 0x0010){ // make sure obj is not a literal + if(objPath._valueType && objPath._valueType.__type >= 0x0010){ // make sure obj is not a literal valueInfo = this.__valueTable.get(objPath._valueType.getSymIndex(0x70)); if(/Identifier/.test(propPath.node.type)){ valueInfo.updateProp(propPath.node.name,right_path.getType()); @@ -634,7 +636,7 @@ class PathManager{ var path = this.acquire(node); var objPath = this.acquire(node.object); var propPath = this.acquire(node.property); - if(objPath._valueType.__type >= 0x10 || objPath._valueType.__type&0x0004 ){ // not a literal + if(objPath._valueType && (objPath._valueType.__type >= 0x10 || objPath._valueType.__type&0x0004 )){ // not a literal var objType = this.__valueTable.get(objPath._valueType.getSymIndex(0x74)); // get the value from valueTable if(/Identifier/.test(node.property.type)){ // update the value of current path if(objType.hasProp(node.property.name)){ @@ -650,9 +652,11 @@ class PathManager{ path.setPathValue(new ValueType(0x00ff,["anyType"])); } } - for(let availableType of objPath._valueType.__symIndex){ - for(let [k, v] of this.__valueTable.get(availableType).__props){ - this.__currentValueMap.delete(k); + if (objPath._valueType) { + for(let availableType of objPath._valueType.__symIndex){ + for(let [k, v] of this.__valueTable.get(availableType).__props){ + this.__currentValueMap.delete(k); + } } } if(/Identifier/.test(propPath.node.type)){ @@ -744,7 +748,7 @@ class PathManager{ let path, objPath, currentEnv; path = this.acquire(node); objPath = this.acquire(node.object); - if(path){ + if(path && objPath._valueType){ for(let availableType of objPath._valueType.__symIndex){ for(let [k,v] of this.__valueTable.get(availableType).__props){ // for(let [k,v] of this.__valueTable.get(availableType)){ this.__currentValueMap.delete(k); diff --git a/page.json b/page.json deleted file mode 100644 index acf310b..0000000 --- a/page.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Program","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x1"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"prop_x1"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"prop_x2"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"prop_x3"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"prop_x4"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x2"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1,"raw":"1"},{"type":"Literal","value":2,"raw":"2"},{"type":"Literal","value":3,"raw":"3"},{"type":"Literal","value":4,"raw":"4"},{"type":"Literal","value":5,"raw":"5"},{"type":"Literal","value":6,"raw":"6"},{"type":"Literal","value":7,"raw":"7"}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x3"},"init":{"type":"ArrayExpression","elements":[{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x4"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1.1,"raw":"1.1"},{"type":"Literal","value":2.2,"raw":"2.2"},{"type":"Literal","value":3.3,"raw":"3.3"},{"type":"Literal","value":4.4,"raw":"4.4"},{"type":"Literal","value":5.5,"raw":"5.5"}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x5"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1,"raw":"1"},{"type":"Literal","value":2,"raw":"2"},{"type":"Literal","value":3,"raw":"3"},{"type":"Literal","value":4,"raw":"4"},{"type":"Literal","value":5,"raw":"5"},{"type":"Literal","value":6,"raw":"6"},{"type":"Literal","value":7,"raw":"7"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","argument":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x5"},"property":{"type":"Literal","value":3,"raw":"3"}},"prefix":true}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x6"},"init":{"type":"ArrayExpression","elements":[{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]},{"type":"ArrayExpression","elements":[]}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","argument":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x6"},"property":{"type":"Literal","value":3,"raw":"3"}},"prefix":true}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x7"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1.1,"raw":"1.1"},{"type":"Literal","value":2.2,"raw":"2.2"},{"type":"Literal","value":3.3,"raw":"3.3"},{"type":"Literal","value":4.4,"raw":"4.4"},{"type":"Literal","value":5.5,"raw":"5.5"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","argument":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x7"},"property":{"type":"Literal","value":3,"raw":"3"}},"prefix":true}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x8"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"NewExpression","callee":{"type":"Identifier","name":"Array"},"arguments":[{"type":"Literal","value":10,"raw":"10"}]},"property":{"type":"Identifier","name":"fill"}},"arguments":[{"type":"Literal","value":0,"raw":"0"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x8"},"property":{"type":"Identifier","name":"length"}},"right":{"type":"Literal","value":100,"raw":"100"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x9"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"NewExpression","callee":{"type":"Identifier","name":"Array"},"arguments":[{"type":"Literal","value":10,"raw":"10"}]},"property":{"type":"Identifier","name":"fill"}},"arguments":[{"type":"ArrayExpression","elements":[]}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x9"},"property":{"type":"Identifier","name":"length"}},"right":{"type":"Literal","value":100,"raw":"100"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x10"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"NewExpression","callee":{"type":"Identifier","name":"Array"},"arguments":[{"type":"Literal","value":10,"raw":"10"}]},"property":{"type":"Identifier","name":"fill"}},"arguments":[{"type":"Literal","value":1.1,"raw":"1.1"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x10"},"property":{"type":"Identifier","name":"length"}},"right":{"type":"Literal","value":100,"raw":"100"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x11"},"init":{"type":"ObjectExpression","properties":[]}}],"kind":"var"},{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"interestContol"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":5,"raw":"5"}}],"kind":"let"},"test":{"type":"BinaryExpression","operator":"<","left":{"type":"Identifier","name":"i"},"right":{"type":"Literal","value":133,"raw":"133"}},"update":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"i"},"prefix":false},"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x11"},"property":{"type":"BinaryExpression","operator":"+","left":{"type":"Literal","value":"prop_x","raw":"'prop_x'"},"right":{"type":"Identifier","name":"i"}}},"right":{"type":"Literal","value":1,"raw":"1"}}},{"type":"IfStatement","test":{"type":"BinaryExpression","operator":"<","left":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"interestContol"},"prefix":false},"right":{"type":"Literal","value":10000,"raw":"10000"}},"consequent":{"type":"BreakStatement","label":null},"alternate":null}]}}]},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x12"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"prop_x133"},"computed":false,"value":{"type":"Literal","value":1,"raw":"1"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"prop_x134"},"computed":false,"value":{"type":"Literal","value":2,"raw":"2"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x12"},"property":{"type":"Identifier","name":"prop_x135"}},"right":{"type":"Literal","value":1,"raw":"1"}}},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","argument":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"var_x12"},"property":{"type":"Identifier","name":"prop_x133"}},"prefix":true}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x13"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":0,"raw":"0"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x13"},"property":{"type":"Literal","value":256,"raw":"256"}},"right":{"type":"Literal","value":1,"raw":"1"}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x13"},"property":{"type":"Literal","value":4096,"raw":"4096"}},"right":{"type":"Literal","value":2,"raw":"2"}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x13"},"property":{"type":"Literal","value":65536,"raw":"65536"}},"right":{"type":"Literal","value":3,"raw":"3"}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"var_x13"},"property":{"type":"Literal","value":1048576,"raw":"1048576"}},"right":{"type":"Literal","value":3,"raw":"3"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"__proto__"},"init":{"type":"ArrayExpression","elements":[]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_x14"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"__proto__"},"computed":false,"value":{"type":"Identifier","name":"__proto__"},"kind":"init","method":false,"shorthand":true}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c1"},"init":{"type":"Literal","value":1,"raw":"1"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c2"},"init":{"type":"Literal","value":1.1,"raw":"1.1"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c3"},"init":{"type":"Literal","value":2147483647,"raw":"2147483647"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c4"},"init":{"type":"Literal","value":4294967295,"raw":"4294967295"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c5"},"init":{"type":"Literal","value":2147647490,"raw":"2147647490"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c6"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c7"},"init":{"type":"Literal","value":1073741823,"raw":"1073741823"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"var_c8"},"init":{"type":"Literal","value":18446744073709552000,"raw":"18446744073709552000"}}],"kind":"var"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x0"},"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x1"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x1"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x2"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x2"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x3"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x3"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x4"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x4"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x5"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x5"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"func_x6"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"var_x6"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"print"},"init":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"a"}],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"BinaryExpression","operator":"+","left":{"type":"Identifier","name":"a"},"right":{"type":"Literal","value":"","raw":"''"}}}]},"generator":false,"expression":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"alert"},"init":{"type":"Identifier","name":"print"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"console"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"log"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"readbuffer"},"init":{"type":"Identifier","name":"print"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"printObj"},"init":{"type":"Identifier","name":"print"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"WScript"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"Echo"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"LoadScriptFile"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Arguments"},"computed":false,"value":{"type":"ArrayExpression","elements":[{"type":"Literal","value":1,"raw":"1"},{"type":"Literal","value":2,"raw":"2"},{"type":"Literal","value":3,"raw":"3"},{"type":"Literal","value":4,"raw":"4"},{"type":"Literal","value":5,"raw":"5"},{"type":"Literal","value":6,"raw":"6"},{"type":"Literal","value":7,"raw":"7"},{"type":"Literal","value":8,"raw":"8"}]},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Platform"},"computed":false,"value":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"BUILD_TYPE"},"computed":false,"value":{"type":"Literal","value":"release","raw":"'release'"},"kind":"init","method":false,"shorthand":false}]},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"LoadModule"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"s"}],"body":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"eval"},"arguments":[{"type":"Identifier","name":"s"}]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"e"},"body":{"type":"BlockStatement","body":[]}},"finalizer":null}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"LoadScript"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"s"}],"body":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"eval"},"arguments":[{"type":"Identifier","name":"s"}]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"e"},"body":{"type":"BlockStatement","body":[]}},"finalizer":null}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"RegisterCrossThreadInterfacePS"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"RegisterModuleSource"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Flag"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Attach"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"SetTimeout"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"Quit"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"DumpFunctionPosition"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"testRunner"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"runTests"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"tests"}],"body":{"type":"BlockStatement","body":[{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":null}],"kind":"let"},"right":{"type":"Identifier","name":"tests"},"body":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"tests"},"property":{"type":"Identifier","name":"i"}},"property":{"type":"Identifier","name":"body"}},"arguments":[]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"e"},"body":{"type":"BlockStatement","body":[]}},"finalizer":null}]},"each":false}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"run"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"tests"}],"body":{"type":"BlockStatement","body":[{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":null}],"kind":"let"},"right":{"type":"Identifier","name":"tests"},"body":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"tests"},"property":{"type":"Identifier","name":"i"}},"property":{"type":"Identifier","name":"body"}},"arguments":[]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"e"},"body":{"type":"BlockStatement","body":[]}},"finalizer":null}]},"each":false}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"assert"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"strictEqual"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"areEqual"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"areNotEqual"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"areAlmostEqual"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isTrue"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isFalse"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isUndefined"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isNotUndefined"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"throws"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"doesNotThrow"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"fail"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"matches"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"helpers"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","key":{"type":"Identifier","name":"isInBrowser"},"computed":false,"value":{"type":"Literal","value":false,"raw":"false"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isCompatVersion9"},"computed":false,"value":{"type":"Literal","value":false,"raw":"false"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"isVersion10OrLater"},"computed":false,"value":{"type":"Literal","value":true,"raw":"true"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"getDummyObject"},"computed":false,"value":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"ObjectExpression","properties":[]}}]},"generator":false,"expression":false},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"writeln"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"printObject"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"withPropertyDeleted"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"getTypeOf"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false},{"type":"Property","key":{"type":"Identifier","name":"getFileAndLineInfo"},"computed":false,"value":{"type":"Identifier","name":"print"},"kind":"init","method":false,"shorthand":false}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"CollectGarbage"},"init":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"interestContol"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"interestContol"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"let"},"test":{"type":"BinaryExpression","operator":"<","left":{"type":"Identifier","name":"i"},"right":{"type":"Literal","value":1000,"raw":"1000"}},"update":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"i"},"prefix":false},"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ab"},"init":{"type":"NewExpression","callee":{"type":"Identifier","name":"ArrayBuffer"},"arguments":[{"type":"Literal","value":4096,"raw":"4096"}]}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","operator":"<","left":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"interestContol"},"prefix":false},"right":{"type":"Literal","value":10000,"raw":"10000"}},"consequent":{"type":"BreakStatement","label":null},"alternate":null},{"type":"IfStatement","test":{"type":"BinaryExpression","operator":"<","left":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"interestContol"},"prefix":false},"right":{"type":"Literal","value":10000,"raw":"10000"}},"consequent":{"type":"BreakStatement","label":null},"alternate":null}]}}]}]},"generator":false,"expression":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"gc"},"init":{"type":"Identifier","name":"CollectGarbage"}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"TrimStackTracePath"},"init":{"type":"FunctionExpression","id":null,"params":[],"body":{"type":"BlockStatement","body":[]},"generator":false,"expression":false}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"BinaryExpression","operator":"+","left":{"type":"Literal","value":4269,"raw":"4269"},"right":{"type":"Literal","value":48879,"raw":"48879"}}},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"test0"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"leaf"},"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Literal","value":100,"raw":"100"}}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"obj1"},"init":{"type":"ObjectExpression","properties":[]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"arrObj0"},"init":{"type":"ObjectExpression","properties":[]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"func0"},"init":{"type":"FunctionExpression","id":null,"params":[{"type":"Identifier","name":"argMath0"},{"type":"Identifier","name":"argArr1"},{"type":"Identifier","name":"argObj2"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"__loopvar16"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"WhileStatement","test":{"type":"LogicalExpression","operator":"&&","left":{"type":"Literal","value":1,"raw":"1"},"right":{"type":"BinaryExpression","operator":"<","left":{"type":"Identifier","name":"__loopvar16"},"right":{"type":"Literal","value":3,"raw":"3"}}},"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"__loopvar16"},"prefix":false}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"argArr1"},"property":{"type":"BinaryExpression","operator":"&","left":{"type":"ConditionalExpression","test":{"type":"BinaryExpression","operator":">=","left":{"type":"BinaryExpression","operator":"%","left":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"leaf"},"property":{"type":"Identifier","name":"call"}},"arguments":[{"type":"Identifier","name":"argObj2"}]},"right":{"type":"ConditionalExpression","test":{"type":"Literal","value":0,"raw":"0"},"consequent":{"type":"Literal","value":2147483647,"raw":"2147483647"},"alternate":{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":7335274600096260000,"raw":"7.33527460009626E+18"},"prefix":true}}},"right":{"type":"Literal","value":0,"raw":"0"}},"consequent":{"type":"BinaryExpression","operator":"%","left":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"leaf"},"property":{"type":"Identifier","name":"call"}},"arguments":[{"type":"Identifier","name":"argObj2"}]},"right":{"type":"ConditionalExpression","test":{"type":"Literal","value":0,"raw":"0"},"consequent":{"type":"Literal","value":2147483647,"raw":"2147483647"},"alternate":{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":7335274600096260000,"raw":"7.33527460009626E+18"},"prefix":true}}},"alternate":{"type":"Literal","value":0,"raw":"0"}},"right":{"type":"Literal","value":15,"raw":"0XF"}}},"right":{"type":"UpdateExpression","operator":"--","argument":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"obj1"},"property":{"type":"Identifier","name":"prop0"}},"prefix":true}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"*=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"obj1"},"property":{"type":"Identifier","name":"length"}},"right":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"argArr1"},"property":{"type":"Literal","value":16,"raw":"16"}}}}]}}]},"generator":false,"expression":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ui16"},"init":{"type":"NewExpression","callee":{"type":"Identifier","name":"Uint16Array"},"arguments":[{"type":"Literal","value":256,"raw":"256"}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"intary"},"init":{"type":"ArrayExpression","elements":[{"type":"Literal","value":4,"raw":"4"},{"type":"Literal","value":66,"raw":"66"},{"type":"Literal","value":767,"raw":"767"},{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":100,"raw":"100"},"prefix":true},{"type":"Literal","value":0,"raw":"0"},{"type":"Literal","value":1213,"raw":"1213"},{"type":"Literal","value":34,"raw":"34"},{"type":"Literal","value":42,"raw":"42"},{"type":"Literal","value":55,"raw":"55"},{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":123,"raw":"123"},"prefix":true},{"type":"Literal","value":567,"raw":"567"},{"type":"Literal","value":77,"raw":"77"},{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":234,"raw":"234"},"prefix":true},{"type":"Literal","value":88,"raw":"88"},{"type":"Literal","value":11,"raw":"11"},{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":66,"raw":"66"},"prefix":true}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"__loopvar1"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"strvar0"},"init":null}],"kind":"var"},"right":{"type":"Identifier","name":"ui16"},"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","operator":"!=","left":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"strvar0"},"property":{"type":"Identifier","name":"indexOf"}},"arguments":[{"type":"Literal","value":"method","raw":"'method'"}]},"right":{"type":"UnaryExpression","operator":"-","argument":{"type":"Literal","value":1,"raw":"1"},"prefix":true}},"consequent":{"type":"ContinueStatement","label":null},"alternate":null},{"type":"IfStatement","test":{"type":"BinaryExpression","operator":">","left":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"__loopvar1"},"prefix":false},"right":{"type":"Literal","value":3,"raw":"3"}},"consequent":{"type":"BreakStatement","label":null},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"obj1"},"property":{"type":"Identifier","name":"prop0"}},"right":{"type":"Literal","value":1,"raw":"1"}}},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"__loopvar3"},"init":{"type":"Literal","value":0,"raw":"0"}}],"kind":"var"},{"type":"DoWhileStatement","body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"UpdateExpression","operator":"++","argument":{"type":"Identifier","name":"__loopvar3"},"prefix":false}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"obj1"},"property":{"type":"Identifier","name":"prop0"}},"right":{"type":"CallExpression","callee":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"func0"},"property":{"type":"Identifier","name":"call"}},"arguments":[{"type":"Identifier","name":"obj1"},{"type":"Literal","value":1,"raw":"1"},{"type":"Identifier","name":"intary"},{"type":"Literal","value":1,"raw":"1"}]}}}]},"test":{"type":"LogicalExpression","operator":"&&","left":{"type":"Literal","value":1,"raw":"1"},"right":{"type":"BinaryExpression","operator":"<","left":{"type":"Identifier","name":"__loopvar3"},"right":{"type":"Literal","value":3,"raw":"3"}}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","computed":true,"object":{"type":"Identifier","name":"intary"},"property":{"type":"Literal","value":18,"raw":"18"}},"right":{"type":"UpdateExpression","operator":"--","argument":{"type":"MemberExpression","computed":false,"object":{"type":"Identifier","name":"arrObj0"},"property":{"type":"Identifier","name":"length"}},"prefix":false}}}]},"each":false}]},"generator":false,"expression":false},{"type":"EmptyStatement"},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"test0"},"arguments":[]}},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"test0"},"arguments":[]}},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"test0"},"arguments":[]}}],"sourceType":"script"} \ No newline at end of file diff --git a/testcase.js b/testcase.js index 1089c72..1d14489 100644 --- a/testcase.js +++ b/testcase.js @@ -7,11 +7,13 @@ var espath = require('./espath/lib'); var random = require('./random'); var generator = require('./esbuilder'); - +var sleep = require('system-sleep'); var rf=require("fs"); +console.log = function() {} +var tmpfile = "/dev/shm/r"+process.pid+".js" /** * * Tools function while mutate and generate @@ -71,12 +73,16 @@ function testBuilder(){ //rf.writeFileSync('page.js',page); } -//testRun() -testBuilder() +var counter=0; +var success=0; + +//testRun(0) +//testBuilder() for(let i=0;i<10000;i++){ //console.log(i); //testBuilder(); + if (!testRun(i)) break; } @@ -224,7 +230,7 @@ function testMutate(){ rf.writeFileSync('page.json',dump(ast)); var page = escodegen.generate(ast); // console.log(page); - rf.writeFileSync('r.js',page); + rf.writeFileSync(tmpfile,page); } function testTraverse(){ @@ -256,9 +262,21 @@ function testTraverse(){ }); } -function testRun(){ +function testRun(i){ testMutate(); - child_process.execFileSync("/Users/android/Project/webkit/WebKitBuild/Debug/bin/jsc",["r.js"],{timeout:4000}); + console.error("started",i, 1.0*success/counter, counter); + counter++; + try { + console.error(child_process.execFileSync("/media/detlef/Fast/KALI/fuzzer/gecko-dev/js/src/fuzzbuild_OPT.OBJ/dist/bin/js",[tmpfile],{timeout:4000,stdio:'pipe'})); + //console.log(child_process.execFileSync("/media/detlef/Fast/KALI/fuzzer/ASTFuzz/a.out",["r.js"],{timeout:4000})); + success++; + } catch (err) { + //console.error(err); + if (err.signal == 'SIGSEGV') {console.error(err.signal,process.pid); return 0;} + } + console.error("done"); + sleep(10000); + return 1; } From b9323ba5127b564de158f84432d6eeb406002903 Mon Sep 17 00:00:00 2001 From: detlef Date: Sun, 9 Feb 2020 16:10:19 +0100 Subject: [PATCH 3/9] - minor --- SHM_TEST_set.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SHM_TEST_set.c b/SHM_TEST_set.c index 6cd4e80..971e096 100644 --- a/SHM_TEST_set.c +++ b/SHM_TEST_set.c @@ -1,5 +1,6 @@ -//compile with gcc -o SHM_TEST_set SHM_TEST_set.c -lrt - +// compile with +// gcc -o SHM_TEST_set SHM_TEST_set.c -lrt +// run fuzzilli patched javascript engine with environmentvariable SHM_ID=/SHM_TEST #include #include From 4db405e88f8ea1e075e848d95da76f09ba0b872d Mon Sep 17 00:00:00 2001 From: detlef Date: Sun, 9 Feb 2020 16:26:41 +0100 Subject: [PATCH 4/9] - very little cleanup --- SHM_TEST_get.c | 8 +++++++- SHM_TEST_set.c | 11 +++++++++-- testcase.js | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/SHM_TEST_get.c b/SHM_TEST_get.c index d3cfb5d..95d16f5 100644 --- a/SHM_TEST_get.c +++ b/SHM_TEST_get.c @@ -1,6 +1,7 @@ //compile with gcc -o SHM_TEST_get SHM_TEST_get.c -lrt #include +#include #include #include #include @@ -25,11 +26,16 @@ int main(int argc, char *argv[]) struct shmem_data* data1; pid_t pid; void *addr; + char* shm_key = getenv("SHM_ID"); pid = getpid(); // get shared memory file descriptor (NOT a file) - fd = shm_open(STORAGE_ID, O_RDONLY, S_IRUSR | S_IWUSR); + if (shm_key) + fd = shm_open(shm_key, O_RDONLY, S_IRUSR | S_IWUSR); + else + fd = shm_open(STORAGE_ID, O_RDONLY, S_IRUSR | S_IWUSR); + if (fd == -1) { perror("open"); diff --git a/SHM_TEST_set.c b/SHM_TEST_set.c index 971e096..c54b8f0 100644 --- a/SHM_TEST_set.c +++ b/SHM_TEST_set.c @@ -3,6 +3,7 @@ // run fuzzilli patched javascript engine with environmentvariable SHM_ID=/SHM_TEST #include +#include #include #include #include @@ -20,12 +21,18 @@ int main(int argc, char *argv[]) pid_t pid; void *addr; char data[STORAGE_SIZE]; - + char* shm_key = getenv("SHM_ID"); + + pid = getpid(); sprintf(data, DATA, pid); // get shared memory file descriptor (NOT a file) - fd = shm_open(STORAGE_ID, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); + if (shm_key) + fd = shm_open(shm_key, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); + else + fd = shm_open(STORAGE_ID, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); + if (fd == -1) { perror("open"); diff --git a/testcase.js b/testcase.js index 1d14489..0f0fd44 100644 --- a/testcase.js +++ b/testcase.js @@ -275,7 +275,7 @@ function testRun(i){ if (err.signal == 'SIGSEGV') {console.error(err.signal,process.pid); return 0;} } console.error("done"); - sleep(10000); +// sleep(10000); return 1; } From 808f1f45c6777159bc79c68c586fa24afbeee1a1 Mon Sep 17 00:00:00 2001 From: detlef Date: Sun, 9 Feb 2020 16:33:35 +0100 Subject: [PATCH 5/9] - test --- testcase.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testcase.js b/testcase.js index 0f0fd44..275fe29 100644 --- a/testcase.js +++ b/testcase.js @@ -264,7 +264,7 @@ function testTraverse(){ function testRun(i){ testMutate(); - console.error("started",i, 1.0*success/counter, counter); + console.error("started",i, 1.0*success/counter, success); counter++; try { console.error(child_process.execFileSync("/media/detlef/Fast/KALI/fuzzer/gecko-dev/js/src/fuzzbuild_OPT.OBJ/dist/bin/js",[tmpfile],{timeout:4000,stdio:'pipe'})); From eaf5d55825ea2cbf54534f6c584bd98d48fd759b Mon Sep 17 00:00:00 2001 From: detlef Date: Sun, 9 Feb 2020 16:57:13 +0100 Subject: [PATCH 6/9] - small shm improvement --- SHM_TEST_set.c | 3 ++- espath/lib/path-manager.js | 7 +++++-- testcase.js | 4 ++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/SHM_TEST_set.c b/SHM_TEST_set.c index c54b8f0..b3369fd 100644 --- a/SHM_TEST_set.c +++ b/SHM_TEST_set.c @@ -60,7 +60,8 @@ int main(int argc, char *argv[]) memcpy(addr, data, STORAGE_SIZE); // wait for someone to read it - sleep(2000); + while (1) + sleep(2000); // mmap cleanup res = munmap(addr, STORAGE_SIZE); diff --git a/espath/lib/path-manager.js b/espath/lib/path-manager.js index 0d6c582..0a546b0 100644 --- a/espath/lib/path-manager.js +++ b/espath/lib/path-manager.js @@ -654,8 +654,11 @@ class PathManager{ } if (objPath._valueType) { for(let availableType of objPath._valueType.__symIndex){ - for(let [k, v] of this.__valueTable.get(availableType).__props){ - this.__currentValueMap.delete(k); + //if (this.__valueTable.get(availableType)) + { + for(let [k, v] of this.__valueTable.get(availableType).__props){ + this.__currentValueMap.delete(k); + } } } } diff --git a/testcase.js b/testcase.js index 275fe29..469a06c 100644 --- a/testcase.js +++ b/testcase.js @@ -79,6 +79,10 @@ var success=0; //testRun(0) //testBuilder() + +console.error(child_process.execFile("./SHM_TEST_set")); + + for(let i=0;i<10000;i++){ //console.log(i); //testBuilder(); From ee4e0ffa32e9d0f72278e4cd1c42ca869683ae58 Mon Sep 17 00:00:00 2001 From: detlef Date: Mon, 10 Feb 2020 15:59:09 +0100 Subject: [PATCH 7/9] - some tests and cleanup --- SHM_TEST_get.c | 4 ++-- SHM_TEST_set.c | 21 +++++++++++++++++---- espath/lib/path-manager.js | 18 ++++++++++-------- testcase.js | 30 +++++++++++++++++++++--------- 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/SHM_TEST_get.c b/SHM_TEST_get.c index 95d16f5..322521b 100644 --- a/SHM_TEST_get.c +++ b/SHM_TEST_get.c @@ -54,7 +54,7 @@ int main(int argc, char *argv[]) //memcpy(data, addr, STORAGE_SIZE); data1 = addr; int counter=0; - printf("Size %u\n", (*data1).num_edges); + //printf("Size %u\n", (*data1).num_edges); for (int i=0;inum_edges;i++) { if (0 != data1->edges[i / 8] && (1 << (i % 8))) { //printf("cov\n"); @@ -63,6 +63,6 @@ int main(int argc, char *argv[]) //else // printf("-\n"); } - printf(" %d / %u --> %6.2f\n",counter,data1->num_edges,100.0 * counter / data1->num_edges ); + printf("Size %u :: %d / %u --> %6.2f\n",(*data1).num_edges,counter,data1->num_edges,100.0 * counter / data1->num_edges ); return 0; } diff --git a/SHM_TEST_set.c b/SHM_TEST_set.c index b3369fd..82d05ac 100644 --- a/SHM_TEST_set.c +++ b/SHM_TEST_set.c @@ -8,11 +8,17 @@ #include #include #include +#include #define STORAGE_ID "/SHM_TEST" #define STORAGE_SIZE 0x100000 #define DATA "Hello, World! From PID %d 0000000000000" +int go_on = 1; +void handle_sigint(int sigint) { + go_on = 0; +} + int main(int argc, char *argv[]) { int res; @@ -22,7 +28,10 @@ int main(int argc, char *argv[]) void *addr; char data[STORAGE_SIZE]; char* shm_key = getenv("SHM_ID"); - + signal(SIGINT, handle_sigint); + signal(SIGTERM, handle_sigint); + //signal(SIGABRT, handle_sigint); + //signal(SIGKILL, handle_sigint); pid = getpid(); sprintf(data, DATA, pid); @@ -60,8 +69,8 @@ int main(int argc, char *argv[]) memcpy(addr, data, STORAGE_SIZE); // wait for someone to read it - while (1) - sleep(2000); + while (go_on) + sleep(1); // mmap cleanup res = munmap(addr, STORAGE_SIZE); @@ -72,7 +81,11 @@ int main(int argc, char *argv[]) } // shm_open cleanup - fd = shm_unlink(STORAGE_ID); + if (shm_key) + fd = shm_unlink(shm_key); + else + fd = shm_unlink(STORAGE_ID); + if (fd == -1) { perror("unlink"); diff --git a/espath/lib/path-manager.js b/espath/lib/path-manager.js index 0a546b0..5867b65 100644 --- a/espath/lib/path-manager.js +++ b/espath/lib/path-manager.js @@ -462,7 +462,7 @@ class PathManager{ path = this.acquire(node); calleePath = this.acquire(node.callee); if(path){ - if(calleePath._valueType.getType() & 0x20){ + if(this.__valueTable.get(calleePath._valueType.getSymIndex(0x20)) && calleePath._valueType.getType() & 0x20){ console.log(calleePath._valueType); path.setPathValue(this.__valueTable.get(calleePath._valueType.getSymIndex(0x20)).__desc.ret); }else{ @@ -532,10 +532,10 @@ class PathManager{ let propPath = this.acquire(node.left.property); if(objPath._valueType && objPath._valueType.__type >= 0x0010){ // make sure obj is not a literal valueInfo = this.__valueTable.get(objPath._valueType.getSymIndex(0x70)); - if(/Identifier/.test(propPath.node.type)){ + if(valueInfo && /Identifier/.test(propPath.node.type)){ valueInfo.updateProp(propPath.node.name,right_path.getType()); } - else if(/Literal/.test(propPath.node.type)){ + else if(valueInfo && /Literal/.test(propPath.node.type)){ // if(valueInfo.__props.has(propPath.node.value)){ // valueInfo.__props.get(propPath.node.value).update(right_path._valueType); // }else{ @@ -639,7 +639,7 @@ class PathManager{ if(objPath._valueType && (objPath._valueType.__type >= 0x10 || objPath._valueType.__type&0x0004 )){ // not a literal var objType = this.__valueTable.get(objPath._valueType.getSymIndex(0x74)); // get the value from valueTable if(/Identifier/.test(node.property.type)){ // update the value of current path - if(objType.hasProp(node.property.name)){ + if(objType && objType.hasProp(node.property.name)){ path.setPathValue(objType.getProp(node.property.name)); }else{ //path._valueType = new ValueType(); // there is no prop in the obj @@ -655,10 +655,12 @@ class PathManager{ if (objPath._valueType) { for(let availableType of objPath._valueType.__symIndex){ //if (this.__valueTable.get(availableType)) - { - for(let [k, v] of this.__valueTable.get(availableType).__props){ - this.__currentValueMap.delete(k); - } + { + if (this.__valueTable.get(availableType)) { + for(let [k, v] of this.__valueTable.get(availableType).__props){ + this.__currentValueMap.delete(k); + } + } } } } diff --git a/testcase.js b/testcase.js index 469a06c..f2f1515 100644 --- a/testcase.js +++ b/testcase.js @@ -13,6 +13,17 @@ var rf=require("fs"); console.log = function() {} +/** +* two command line arguments, first filename and second, if anything the shared memory is not rebuild +*/ + + + +if (process.argv[2]) + base_file = process.argv[2]; +else + base_file = 'page.js'; + var tmpfile = "/dev/shm/r"+process.pid+".js" /** * @@ -79,16 +90,16 @@ var success=0; //testRun(0) //testBuilder() - -console.error(child_process.execFile("./SHM_TEST_set")); +if (!process.argv[3]) {var cproc = child_process.execFile("./SHM_TEST_set");} -for(let i=0;i<10000;i++){ +for(var i=0;i<10000000;i++){ //console.log(i); //testBuilder(); - if (!testRun(i)) break; + if (!testRun()) break; } +if (!process.argv[3]) {cproc.kill('SIGINT');} function currentVaribles(path){ let currentVaribles = []; @@ -127,7 +138,7 @@ function currentLiteral(vars){ function testMutate(){ - var raw=rf.readFileSync("page.js","utf-8"); + var raw=rf.readFileSync(base_file,"utf-8"); var ast = esprima.parse(raw); @@ -266,17 +277,18 @@ function testTraverse(){ }); } -function testRun(i){ +function testRun(){ testMutate(); - console.error("started",i, 1.0*success/counter, success); + console.error("started ",counter, (100.0*success/counter).toFixed(2), success); counter++; try { - console.error(child_process.execFileSync("/media/detlef/Fast/KALI/fuzzer/gecko-dev/js/src/fuzzbuild_OPT.OBJ/dist/bin/js",[tmpfile],{timeout:4000,stdio:'pipe'})); + console.error(child_process.execFileSync("/media/detlef/Fast/KALI/fuzzer/gecko-dev/js/src/fuzzbuild_OPT.OBJ/dist/bin/js",[tmpfile],{timeout:4000,stdio:'pipe',encoding:'utf-8'})); //console.log(child_process.execFileSync("/media/detlef/Fast/KALI/fuzzer/ASTFuzz/a.out",["r.js"],{timeout:4000})); + console.error(child_process.execFileSync("./SHM_TEST_get",{encoding:'utf-8'})); success++; } catch (err) { //console.error(err); - if (err.signal == 'SIGSEGV') {console.error(err.signal,process.pid); return 0;} + if (err.signal == 'SIGSEGV') {console.error(err.signal,process.pid,err.stderr); return 0;} } console.error("done"); // sleep(10000); From 8fc56846b865a4cae67c83cb69899825b2659805 Mon Sep 17 00:00:00 2001 From: detlef Date: Mon, 10 Feb 2020 16:22:23 +0100 Subject: [PATCH 8/9] - nicer --- SHM_TEST_get.c | 2 +- testcase.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SHM_TEST_get.c b/SHM_TEST_get.c index 322521b..78289d0 100644 --- a/SHM_TEST_get.c +++ b/SHM_TEST_get.c @@ -63,6 +63,6 @@ int main(int argc, char *argv[]) //else // printf("-\n"); } - printf("Size %u :: %d / %u --> %6.2f\n",(*data1).num_edges,counter,data1->num_edges,100.0 * counter / data1->num_edges ); + printf("SHM Edges %u :: %d / %u --> %6.2f coverage\n",(*data1).num_edges,counter,data1->num_edges,100.0 * counter / data1->num_edges ); return 0; } diff --git a/testcase.js b/testcase.js index f2f1515..0f20c18 100644 --- a/testcase.js +++ b/testcase.js @@ -279,7 +279,7 @@ function testTraverse(){ function testRun(){ testMutate(); - console.error("started ",counter, (100.0*success/counter).toFixed(2), success); + console.error("started ", success, "of", counter, "->", (100.0*success/counter).toFixed(2), "%" ); counter++; try { console.error(child_process.execFileSync("/media/detlef/Fast/KALI/fuzzer/gecko-dev/js/src/fuzzbuild_OPT.OBJ/dist/bin/js",[tmpfile],{timeout:4000,stdio:'pipe',encoding:'utf-8'})); From a6fb5c7bb1505f0d954640877a2ae324338a7710 Mon Sep 17 00:00:00 2001 From: detlef Date: Mon, 10 Feb 2020 18:20:42 +0100 Subject: [PATCH 9/9] - old version redone --- esbuilder/jsbuilder.js | 9 ++++++--- node_modules/escodegen/escodegen.js | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/esbuilder/jsbuilder.js b/esbuilder/jsbuilder.js index 917526a..25e2a73 100644 --- a/esbuilder/jsbuilder.js +++ b/esbuilder/jsbuilder.js @@ -1571,14 +1571,17 @@ class Builder extends esbuilder.Builder{ break; } - /**if(this.state.needProperty && parent.type == estraverse.Syntax.MemberExpression){ + if(this.state.needProperty && parent.type == estraverse.Syntax.MemberExpression){ + /** + * + */ console.log(parent); console.log(parent.object); let objValuetype = this.pathManager.acquire(parent.object)._valueType; var valueinfo = this.currentValueTable().get(objValuetype.getSymIndex(0x74)); - node.name = random.randomElement([...valueinfo.getProps().keys()]); + if (valueinfo) {node.name = random.randomElement([...valueinfo.getProps().keys()]);} break; - }*/ + } if(this.state.needObject && parent.type == estraverse.Syntax.MemberExpression){ var visitied = []; diff --git a/node_modules/escodegen/escodegen.js b/node_modules/escodegen/escodegen.js index 9208803..beb291b 100644 --- a/node_modules/escodegen/escodegen.js +++ b/node_modules/escodegen/escodegen.js @@ -1794,7 +1794,8 @@ result.push(',' + space); } } - return parenthesize(result, Precedence.Sequence, precedence); + // return parenthesize(result, Precedence.Sequence, precedence); + return parenthesize(result, Precedence.Sequence, 1); }, AssignmentExpression: function (expr, precedence, flags) {