Check length before accessing indices, add awaitTransactionSuccess where needed, and rename function

This commit is contained in:
Amir Bandeali
2018-05-30 17:52:37 -07:00
parent 1382c1243a
commit 79e7c44884
5 changed files with 43 additions and 25 deletions

View File

@@ -53,16 +53,18 @@ contract ERC20Proxy is
{
// Data must be intended for this proxy.
uint256 length = assetMetadata.length;
require(
length == 21,
INVALID_METADATA_LENGTH
);
require(
uint8(assetMetadata[length - 1]) == PROXY_ID,
PROXY_ID_MISMATCH
);
// Decode metadata.
require(
length == 21,
INVALID_METADATA_LENGTH
);
address token = readAddress(assetMetadata, 0);
// Transfer tokens.

View File

@@ -53,6 +53,12 @@ contract ERC721Proxy is
{
// Data must be intended for this proxy.
uint256 length = assetMetadata.length;
require(
length == 53,
INVALID_METADATA_LENGTH
);
require(
uint8(assetMetadata[length - 1]) == PROXY_ID,
PROXY_ID_MISMATCH
@@ -65,10 +71,6 @@ contract ERC721Proxy is
);
// Decode metadata
require(
length == 53,
INVALID_METADATA_LENGTH
);
address token = readAddress(assetMetadata, 0);
uint256 tokenId = readUint256(assetMetadata, 20);

View File

@@ -56,10 +56,10 @@ contract MixinSignatureValidator is
preSigned[hash][signer] = true;
}
/// @dev Approves a Validator contract to verify signatures on signer's behalf.
/// @dev Approves/unnapproves a Validator contract to verify signatures on signer's behalf.
/// @param validator Address of Validator contract.
/// @param approval Approval or disapproval of Validator contract.
function approveSignatureValidator(
function setSignatureValidatorApproval(
address validator,
bool approval
)

View File

@@ -31,10 +31,10 @@ contract ISignatureValidator {
)
external;
/// @dev Approves a Validator contract to verify signatures on signer's behalf.
/// @dev Approves/unnapproves a Validator contract to verify signatures on signer's behalf.
/// @param validator Address of Validator contract.
/// @param approval Approval or disapproval of Validator contract.
function approveSignatureValidator(
function setSignatureValidatorApproval(
address validator,
bool approval
)

View File

@@ -220,9 +220,11 @@ describe('Exchange transactions', () => {
exchange.address,
);
const isApproved = true;
await exchange.approveSignatureValidator.sendTransactionAsync(whitelist.address, isApproved, {
from: takerAddress,
});
await web3Wrapper.awaitTransactionSuccessAsync(
await exchange.approveSignatureValidator.sendTransactionAsync(whitelist.address, isApproved, {
from: takerAddress,
}),
);
const defaultOrderParams = {
...constants.STATIC_ORDER_PARAMS,
senderAddress: whitelist.address,
@@ -242,7 +244,9 @@ describe('Exchange transactions', () => {
it('should revert if maker has not been whitelisted', async () => {
const isApproved = true;
await whitelist.updateWhitelistStatus.sendTransactionAsync(takerAddress, isApproved, { from: owner });
await web3Wrapper.awaitTransactionSuccessAsync(
await whitelist.updateWhitelistStatus.sendTransactionAsync(takerAddress, isApproved, { from: owner }),
);
const orderStruct = orderUtils.getOrderStruct(signedOrder);
const takerAssetFillAmount = signedOrder.takerAssetAmount;
@@ -260,7 +264,9 @@ describe('Exchange transactions', () => {
it('should revert if taker has not been whitelisted', async () => {
const isApproved = true;
await whitelist.updateWhitelistStatus.sendTransactionAsync(makerAddress, isApproved, { from: owner });
await web3Wrapper.awaitTransactionSuccessAsync(
await whitelist.updateWhitelistStatus.sendTransactionAsync(makerAddress, isApproved, { from: owner }),
);
const orderStruct = orderUtils.getOrderStruct(signedOrder);
const takerAssetFillAmount = signedOrder.takerAssetAmount;
@@ -278,19 +284,27 @@ describe('Exchange transactions', () => {
it('should fill the order if maker and taker have been whitelisted', async () => {
const isApproved = true;
await whitelist.updateWhitelistStatus.sendTransactionAsync(makerAddress, isApproved, { from: owner });
await whitelist.updateWhitelistStatus.sendTransactionAsync(takerAddress, isApproved, { from: owner });
await web3Wrapper.awaitTransactionSuccessAsync(
await whitelist.updateWhitelistStatus.sendTransactionAsync(makerAddress, isApproved, { from: owner }),
);
await web3Wrapper.awaitTransactionSuccessAsync(
await whitelist.updateWhitelistStatus.sendTransactionAsync(takerAddress, isApproved, { from: owner }),
);
const orderStruct = orderUtils.getOrderStruct(signedOrder);
const takerAssetFillAmount = signedOrder.takerAssetAmount;
const salt = generatePseudoRandomSalt();
await whitelist.fillOrderIfWhitelisted.sendTransactionAsync(
orderStruct,
takerAssetFillAmount,
salt,
signedOrder.signature,
{ from: takerAddress },
await web3Wrapper.awaitTransactionSuccessAsync(
await whitelist.fillOrderIfWhitelisted.sendTransactionAsync(
orderStruct,
takerAssetFillAmount,
salt,
signedOrder.signature,
{ from: takerAddress },
),
);
const newBalances = await erc20Wrapper.getBalancesAsync();
const makerAssetFillAmount = signedOrder.makerAssetAmount;