diff --git a/packages/protocol/contracts/stability/Reserve.sol b/packages/protocol/contracts/stability/Reserve.sol index 9fa6bb2f38c..60bcc46fc87 100644 --- a/packages/protocol/contracts/stability/Reserve.sol +++ b/packages/protocol/contracts/stability/Reserve.sol @@ -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); } @@ -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); diff --git a/packages/protocol/test/stability/reserve.ts b/packages/protocol/test/stability/reserve.ts index 661ae499174..cd82129e6ef 100644 --- a/packages/protocol/test/stability/reserve.ts +++ b/packages/protocol/test/stability/reserve.ts @@ -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]) @@ -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)', () => {