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/lib/non-delegate-code.txt | 1 + test/unit/idStore-test.js | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 test/lib/non-delegate-code.txt (limited to 'test') diff --git a/test/lib/non-delegate-code.txt b/test/lib/non-delegate-code.txt new file mode 100644 index 000000000..68b0d4dac --- /dev/null +++ b/test/lib/non-delegate-code.txt @@ -0,0 +1 @@ +0x606060405260e060020a60003504637bd703e8811461003157806390b98a111461005c578063f8b2cb4f1461008e575b005b6100b4600435600073f28c53067227848f8145355c455da5cfdd20e3136396e4ee3d6100da84610095565b6100c660043560243533600160a060020a03166000908152602081905260408120548290101561011f57506000610189565b6100b46004355b600160a060020a0381166000908152602081905260409020545b919050565b60408051918252519081900360200190f35b604080519115158252519081900360200190f35b60026040518360e060020a02815260040180838152602001828152602001925050506020604051808303818660325a03f4156100025750506040515191506100af9050565b33600160a060020a0390811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060015b9291505056 \ No newline at end of file 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 From 3af3565000e4952d95c50c1c25a9367ba8caec90 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 24 Oct 2016 16:12:44 -0700 Subject: test - fix delegate-call test --- test/lib/example-code.json | 3 +++ test/lib/non-delegate-code.txt | 1 - test/unit/idStore-test.js | 16 ++++++---------- 3 files changed, 9 insertions(+), 11 deletions(-) create mode 100644 test/lib/example-code.json delete mode 100644 test/lib/non-delegate-code.txt (limited to 'test') diff --git a/test/lib/example-code.json b/test/lib/example-code.json new file mode 100644 index 000000000..b76d37a4c --- /dev/null +++ b/test/lib/example-code.json @@ -0,0 +1,3 @@ +{ + "delegateCallCode": "0x606060405260e060020a60003504637bd703e8811461003157806390b98a111461005c578063f8b2cb4f1461008e575b005b6100b4600435600073f28c53067227848f8145355c455da5cfdd20e3136396e4ee3d6100da84610095565b6100c660043560243533600160a060020a03166000908152602081905260408120548290101561011f57506000610189565b6100b46004355b600160a060020a0381166000908152602081905260409020545b919050565b60408051918252519081900360200190f35b604080519115158252519081900360200190f35b60026040518360e060020a02815260040180838152602001828152602001925050506020604051808303818660325a03f4156100025750506040515191506100af9050565b33600160a060020a0390811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060015b9291505056" +} diff --git a/test/lib/non-delegate-code.txt b/test/lib/non-delegate-code.txt deleted file mode 100644 index 68b0d4dac..000000000 --- a/test/lib/non-delegate-code.txt +++ /dev/null @@ -1 +0,0 @@ -0x606060405260e060020a60003504637bd703e8811461003157806390b98a111461005c578063f8b2cb4f1461008e575b005b6100b4600435600073f28c53067227848f8145355c455da5cfdd20e3136396e4ee3d6100da84610095565b6100c660043560243533600160a060020a03166000908152602081905260408120548290101561011f57506000610189565b6100b46004355b600160a060020a0381166000908152602081905260409020545b919050565b60408051918252519081900360200190f35b604080519115158252519081900360200190f35b60026040518360e060020a02815260040180838152602001828152602001925050506020604051808303818660325a03f4156100025750506040515191506100af9050565b33600160a060020a0390811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060015b9291505056 \ No newline at end of file diff --git a/test/unit/idStore-test.js b/test/unit/idStore-test.js index c3f79b088..da465f511 100644 --- a/test/unit/idStore-test.js +++ b/test/unit/idStore-test.js @@ -1,14 +1,10 @@ +const async = require('async') 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() +const configManagerGen = require('../lib/mock-config-manager') +const delegateCallCode = require('../lib/example-code.json').delegateCallCode +const IdentityStore = require('../../app/scripts/lib/idStore') describe('IdentityStore', function() { @@ -170,7 +166,7 @@ describe('IdentityStore', function() { }, }) - var result = idStore.checkForDelegateCall(nonDelegateCode) - assert.equal(result, false, 'no delegate call in provided code') + var result = idStore.checkForDelegateCall(delegateCallCode) + assert.equal(result, true, 'no delegate call in provided code') }) }) -- cgit v1.2.3