Socket
Socket
Sign inDemoInstall

@webassemblyjs/validation

Package Overview
Dependencies
Maintainers
1
Versions
63
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.8.0 to 1.8.1

38

esm/type-checker.js
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
import { traverse, isInstruction } from "@webassemblyjs/ast";
import { traverse, isInstruction, isSignature, isNumberLiteral } from "@webassemblyjs/ast";
import { moduleContextFromModuleAST } from "@webassemblyjs/helper-module-context";

@@ -55,2 +55,10 @@ import getType from "./type-checker/get-type.js";

function checkStacks(expectedStack, actualStack) {
if (!(expectedStack !== undefined)) {
throw new Error('expectedStack !== undefined' + " error: " + (undefined || "unknown"));
}
if (!(actualStack !== undefined)) {
throw new Error('actualStack !== undefined' + " error: " + (undefined || "unknown"));
}
if (actualStack !== false) {

@@ -240,7 +248,27 @@ var j = actualStack.length - 1;

typeChecker.setStopFuncCheck(false);
typeChecker.setCurrentFuncName(node.name.value);
var expectedResult = node.signature.results;
typeChecker.setCurrentFuncName(node.name.value); // resolve signature
var signature;
{
// signature might be a reference to a type
if (isSignature(node.signature)) {
signature = node.signature;
} else {
if (!isNumberLiteral(node.signature)) {
throw new Error('isNumberLiteral(node.signature)' + " error: " + (undefined || "unknown"));
}
var typeId = node.signature.value;
if (!moduleContext.hasType(typeId)) {
throw new Error('moduleContext.hasType(typeId)' + " error: " + (undefined || "unknown"));
}
signature = moduleContext.getType(typeId);
}
}
var expectedResult = signature.results;
moduleContext.newContext(node.name.value, expectedResult); // Parameters are local variables
node.signature.params.forEach(function (p) {
signature.params.forEach(function (p) {
return moduleContext.addLocal(p.valtype);

@@ -252,3 +280,3 @@ });

return typeChecker.getErrors();
} // Compare the two
} // Compare the two stacks

@@ -255,0 +283,0 @@

25

esm/type-checker/get-type.js

@@ -508,5 +508,4 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

{
// TODO: These should be polymorphic
args = [];
result = [];
result = [POLYMORPHIC];
break;

@@ -608,9 +607,19 @@ }

{
// TODO: There are more things to be checked here
args = _toConsumableArray(instruction.signature.params.map(function (p) {
// resolve signature
var signature;
{
// signature might be a reference to a type
if (instruction.signature.type === "Signature") {
signature = instruction.signature;
} else {
var typeId = instruction.signature.value; // TODO(sven): check if signature exists
signature = moduleContext.getType(typeId);
}
} // TODO: There are more things to be checked here
args = ["i32"].concat(_toConsumableArray(signature.params.reverse().map(function (p) {
return p.valtype;
})).concat(["i32"]);
result = instruction.signature.results.map(function (p) {
return p.valtype;
});
})));
result = signature.results;
break;

@@ -617,0 +626,0 @@ }

@@ -67,2 +67,10 @@ "use strict";

function checkStacks(expectedStack, actualStack) {
if (!(expectedStack !== undefined)) {
throw new Error('expectedStack !== undefined' + " error: " + (undefined || "unknown"));
}
if (!(actualStack !== undefined)) {
throw new Error('actualStack !== undefined' + " error: " + (undefined || "unknown"));
}
if (actualStack !== false) {

@@ -252,7 +260,27 @@ var j = actualStack.length - 1;

typeChecker.setStopFuncCheck(false);
typeChecker.setCurrentFuncName(node.name.value);
var expectedResult = node.signature.results;
typeChecker.setCurrentFuncName(node.name.value); // resolve signature
var signature;
{
// signature might be a reference to a type
if ((0, _ast.isSignature)(node.signature)) {
signature = node.signature;
} else {
if (!(0, _ast.isNumberLiteral)(node.signature)) {
throw new Error('isNumberLiteral(node.signature)' + " error: " + (undefined || "unknown"));
}
var typeId = node.signature.value;
if (!moduleContext.hasType(typeId)) {
throw new Error('moduleContext.hasType(typeId)' + " error: " + (undefined || "unknown"));
}
signature = moduleContext.getType(typeId);
}
}
var expectedResult = signature.results;
moduleContext.newContext(node.name.value, expectedResult); // Parameters are local variables
node.signature.params.forEach(function (p) {
signature.params.forEach(function (p) {
return moduleContext.addLocal(p.valtype);

@@ -264,3 +292,3 @@ });

return typeChecker.getErrors();
} // Compare the two
} // Compare the two stacks

@@ -267,0 +295,0 @@

@@ -515,5 +515,4 @@ "use strict";

{
// TODO: These should be polymorphic
args = [];
result = [];
result = [_types.POLYMORPHIC];
break;

@@ -615,9 +614,19 @@ }

{
// TODO: There are more things to be checked here
args = _toConsumableArray(instruction.signature.params.map(function (p) {
// resolve signature
var signature;
{
// signature might be a reference to a type
if (instruction.signature.type === "Signature") {
signature = instruction.signature;
} else {
var typeId = instruction.signature.value; // TODO(sven): check if signature exists
signature = moduleContext.getType(typeId);
}
} // TODO: There are more things to be checked here
args = ["i32"].concat(_toConsumableArray(signature.params.reverse().map(function (p) {
return p.valtype;
})).concat(["i32"]);
result = instruction.signature.results.map(function (p) {
return p.valtype;
});
})));
result = signature.results;
break;

@@ -624,0 +633,0 @@ }

{
"name": "@webassemblyjs/validation",
"version": "1.8.0",
"version": "1.8.1",
"description": "Module AST validations",

@@ -20,12 +20,12 @@ "main": "lib/index.js",

"dependencies": {
"@webassemblyjs/ast": "1.8.0",
"@webassemblyjs/helper-module-context": "1.8.0"
"@webassemblyjs/ast": "1.8.1",
"@webassemblyjs/helper-module-context": "1.8.1"
},
"devDependencies": {
"@webassemblyjs/helper-test-framework": "1.8.0",
"@webassemblyjs/wasm-parser": "1.8.0",
"@webassemblyjs/wast-parser": "1.8.0",
"@webassemblyjs/helper-test-framework": "1.8.1",
"@webassemblyjs/wasm-parser": "1.8.1",
"@webassemblyjs/wast-parser": "1.8.1",
"wabt": "1.0.0-nightly.20180421"
},
"gitHead": "8b2d1afa793ea81f20ec63416134c201e39694eb"
"gitHead": "a2f42245e9b597e3541e0f697253449d60fc4d79"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc