From 049705004f306bb83ad1bc0b7315d322becf8263 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Mon, 17 Oct 2016 14:48:25 -0700 Subject: Reproduced issue 743 in test case This contract hex does include the value `f4`, but it was compiled from a contract with no instance of `.delegatecall`. I believe `f4` in this case is part of some other value or contract address, and `ethBinToOps` has some error in how it skips pushed data. @kumavis --- test/unit/idStore-test.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'test/unit') diff --git a/test/unit/idStore-test.js b/test/unit/idStore-test.js index 0a57d2121..c3f79b088 100644 --- a/test/unit/idStore-test.js +++ b/test/unit/idStore-test.js @@ -1,10 +1,15 @@ -var assert = require('assert') -var IdentityStore = require('../../app/scripts/lib/idStore') -var configManagerGen = require('../lib/mock-config-manager') +const assert = require('assert') +const IdentityStore = require('../../app/scripts/lib/idStore') +const configManagerGen = require('../lib/mock-config-manager') +const fs = require('fs') +const path = require('path') const ethUtil = require('ethereumjs-util') const BN = ethUtil.BN const async = require('async') +const nonDelegatePath = path.join(__dirname, '..', 'lib', 'non-delegate-code.txt') +const nonDelegateCode = fs.readFileSync(nonDelegatePath).toString() + describe('IdentityStore', function() { describe('#createNewVault', function () { @@ -156,4 +161,16 @@ describe('IdentityStore', function() { assert.ok(bnResult.gt(gas), 'added more gas as buffer.') assert.equal(result.indexOf('0x'), 0, 'include hex prefix') }) + + describe('#checkForDelegateCall', function() { + const idStore = new IdentityStore({ + configManager: configManagerGen(), + ethStore: { + addAccount(acct) { accounts.push(ethUtil.addHexPrefix(acct)) }, + }, + }) + + var result = idStore.checkForDelegateCall(nonDelegateCode) + assert.equal(result, false, 'no delegate call in provided code') + }) }) -- cgit v1.2.3