Skip to content

Commit

Permalink
[N01] Lack of input validation (#6989)
Browse files Browse the repository at this point in the history
  • Loading branch information
martinvol authored Feb 16, 2021
1 parent 22267c6 commit c0faae7
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
2 changes: 2 additions & 0 deletions packages/protocol/contracts/stability/Reserve.sol
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,7 @@ contract Reserve is
* @param spender The address that is allowed to spend Reserve funds.
*/
function addSpender(address spender) external onlyOwner {
require(address(0) != spender, "Spender can't be null");
isSpender[spender] = true;
emit SpenderAdded(spender);
}
Expand Down Expand Up @@ -325,6 +326,7 @@ contract Reserve is
* @param spender The address that is allowed to spend Reserve funds.
*/
function addExchangeSpender(address spender) external onlyOwner {
require(address(0) != spender, "Spender can't be null");
require(!isExchangeSpender[spender], "Address is already Exchange Spender");
isExchangeSpender[spender] = true;
exchangeSpenderAddresses.push(spender);
Expand Down
12 changes: 10 additions & 2 deletions packages/protocol/test/stability/reserve.ts
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,10 @@ contract('Reserve', (accounts: string[]) => {
})
})

it('does not allow an empty address', async () => {
await assertRevert(reserve.addExchangeSpender('0x0000000000000000000000000000000000000000'))
})

it('has the right list of exchange spenders after addition', async () => {
await reserve.addExchangeSpender(exchangeAddress)
await reserve.addExchangeSpender(accounts[1])
Expand Down Expand Up @@ -373,13 +377,17 @@ contract('Reserve', (accounts: string[]) => {
it('emits on add', async () => {
const addSpenderTx = await reserve.addSpender(spender)

const addExchangeSpenderTxLogs = addSpenderTx.logs.filter((x) => x.event === 'SpenderAdded')
assert(addExchangeSpenderTxLogs.length === 1, 'Did not receive event')
const addSpenderTxLogs = addSpenderTx.logs.filter((x) => x.event === 'SpenderAdded')
assert(addSpenderTxLogs.length === 1, 'Did not receive event')
})

it('only allows owner', async () => {
await assertRevert(reserve.addSpender(nonOwner, { from: nonOwner }))
})

it('does not allow an empty address', async () => {
await assertRevert(reserve.addSpender('0x0000000000000000000000000000000000000000'))
})
})

describe('#removeSpender(spender)', () => {
Expand Down

0 comments on commit c0faae7

Please sign in to comment.