add additional check for contract address

This commit is contained in:
Roman Storm 2018-07-31 16:01:42 -07:00
parent 57dfe2285f
commit b74003c96e
No known key found for this signature in database
GPG Key ID: E3282F1F2CE28E55
2 changed files with 14 additions and 1 deletions

View File

@ -17,6 +17,7 @@ contract BasicForeignBridge is EternalStorage, Validatable {
bytes32 txHash;
address contractAddress;
(recipient, amount, txHash, contractAddress) = Message.parseMessage(message);
require(contractAddress == address(this));
require(!relayedMessages(txHash));
setRelayedMessages(txHash, true);
require(onExecuteMessage(recipient, amount));

View File

@ -70,7 +70,6 @@ contract('ForeignBridge', async (accounts) => {
var recipientAccount = accounts[3];
const balanceBefore = await token.balanceOf(recipientAccount)
const totalSupplyBefore = await token.totalSupply()
var homeGasPrice = web3.toBigNumber(0);
var value = web3.toBigNumber(web3.toWei(0.25, "ether"));
var transactionHash = "0x1045bfe274b88120a6b1e5d01b5ec00ab5d01098346e90e7c7a3c9b8f0181c80";
var message = createMessage(recipientAccount, value, transactionHash, foreignBridge.address);
@ -89,6 +88,19 @@ contract('ForeignBridge', async (accounts) => {
totalSupplyAfter.should.be.bignumber.equal(totalSupplyBefore.add(value))
true.should.be.equal(await foreignBridge.relayedMessages(transactionHash))
})
it('should reject if address is not foreign address', async () => {
var recipientAccount = accounts[3];
const balanceBefore = await token.balanceOf(recipientAccount)
const totalSupplyBefore = await token.totalSupply()
var value = web3.toBigNumber(web3.toWei(0.25, "ether"));
var transactionHash = "0x1045bfe274b88120a6b1e5d01b5ec00ab5d01098346e90e7c7a3c9b8f0181c80";
var message = createMessage(recipientAccount, value, transactionHash, accounts[0]);
var signature = await sign(authorities[0], message)
var vrs = signatureToVRS(signature);
false.should.be.equal(await foreignBridge.relayedMessages(transactionHash))
await foreignBridge.executeSignatures([vrs.v], [vrs.r], [vrs.s], message).should.be.rejectedWith(ERROR_MSG)
})
it('should allow second deposit with different transactionHash but same recipient and value', async ()=> {
var recipientAccount = accounts[3];
const balanceBefore = await token.balanceOf(recipientAccount)