Commit 14dd3f66 by Nicolás Venturo

Added sender parameter to initializers using msg.sender.

parent 716efc4b
...@@ -12,9 +12,9 @@ contract CapperRole is Initializable { ...@@ -12,9 +12,9 @@ contract CapperRole is Initializable {
Roles.Role private cappers; Roles.Role private cappers;
function initialize() public initializer { function initialize(address sender) public initializer {
if (!isCapper(msg.sender)) { if (!isCapper(sender)) {
_addCapper(msg.sender); _addCapper(sender);
} }
} }
......
...@@ -12,9 +12,9 @@ contract MinterRole is Initializable { ...@@ -12,9 +12,9 @@ contract MinterRole is Initializable {
Roles.Role private minters; Roles.Role private minters;
function initialize() public initializer { function initialize(address sender) public initializer {
if (!isMinter(msg.sender)) { if (!isMinter(sender)) {
_addMinter(msg.sender); _addMinter(sender);
} }
} }
......
...@@ -12,9 +12,9 @@ contract PauserRole is Initializable { ...@@ -12,9 +12,9 @@ contract PauserRole is Initializable {
Roles.Role private pausers; Roles.Role private pausers;
function initialize() public initializer { function initialize(address sender) public initializer {
if (!isPauser(msg.sender)) { if (!isPauser(sender)) {
_addPauser(msg.sender); _addPauser(sender);
} }
} }
......
...@@ -12,9 +12,9 @@ contract SignerRole is Initializable { ...@@ -12,9 +12,9 @@ contract SignerRole is Initializable {
Roles.Role private signers; Roles.Role private signers;
function initialize() public initializer { function initialize(address sender) public initializer {
if (!isSigner(msg.sender)) { if (!isSigner(sender)) {
_addSigner(msg.sender); _addSigner(sender);
} }
} }
......
...@@ -31,7 +31,7 @@ contract RefundableCrowdsale is Initializable, FinalizableCrowdsale { ...@@ -31,7 +31,7 @@ contract RefundableCrowdsale is Initializable, FinalizableCrowdsale {
// conditional added to make initializer idempotent in case of diamond inheritance // conditional added to make initializer idempotent in case of diamond inheritance
if (address(_escrow) == address(0)) { if (address(_escrow) == address(0)) {
_escrow = new RefundEscrow(); _escrow = new RefundEscrow();
_escrow.initialize(wallet()); _escrow.initialize(wallet(), address(this));
} }
_goal = goal; _goal = goal;
......
...@@ -16,8 +16,8 @@ contract IndividuallyCappedCrowdsale is Initializable, Crowdsale, CapperRole { ...@@ -16,8 +16,8 @@ contract IndividuallyCappedCrowdsale is Initializable, Crowdsale, CapperRole {
mapping(address => uint256) private _contributions; mapping(address => uint256) private _contributions;
mapping(address => uint256) private _caps; mapping(address => uint256) private _caps;
function initialize() public initializer { function initialize(address sender) public initializer {
CapperRole.initialize(); CapperRole.initialize(sender);
} }
/** /**
......
...@@ -16,9 +16,9 @@ contract BreakInvariantBounty is Initializable, PullPayment, Ownable { ...@@ -16,9 +16,9 @@ contract BreakInvariantBounty is Initializable, PullPayment, Ownable {
event TargetCreated(address createdAddress); event TargetCreated(address createdAddress);
function initialize() public initializer { function initialize(address sender) public initializer {
PullPayment.initialize(); PullPayment.initialize();
Ownable.initialize(); Ownable.initialize(sender);
} }
/** /**
......
...@@ -65,8 +65,8 @@ contract SignatureBouncer is Initializable, SignerRole { ...@@ -65,8 +65,8 @@ contract SignatureBouncer is Initializable, SignerRole {
_; _;
} }
function initialize() public initializer { function initialize(address sender) public initializer {
SignerRole.initialize(); SignerRole.initialize(sender);
} }
/** /**
......
...@@ -48,12 +48,13 @@ contract TokenVesting is Initializable, Ownable { ...@@ -48,12 +48,13 @@ contract TokenVesting is Initializable, Ownable {
uint256 start, uint256 start,
uint256 cliffDuration, uint256 cliffDuration,
uint256 duration, uint256 duration,
bool revocable bool revocable,
address sender
) )
public public
initializer initializer
{ {
Ownable.initialize(); Ownable.initialize(sender);
require(beneficiary != address(0)); require(beneficiary != address(0));
require(cliffDuration <= duration); require(cliffDuration <= duration);
......
...@@ -18,8 +18,8 @@ contract SampleCrowdsaleToken is Initializable, ERC20Mintable { ...@@ -18,8 +18,8 @@ contract SampleCrowdsaleToken is Initializable, ERC20Mintable {
string public symbol; string public symbol;
uint8 public decimals; uint8 public decimals;
function initialize() public initializer { function initialize(address sender) public initializer {
ERC20Mintable.initialize(); ERC20Mintable.initialize(sender);
name = "Sample Crowdsale Token"; name = "Sample Crowdsale Token";
symbol = "SCT"; symbol = "SCT";
......
...@@ -20,10 +20,10 @@ contract SimpleToken is Initializable, ERC20 { ...@@ -20,10 +20,10 @@ contract SimpleToken is Initializable, ERC20 {
uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals)); uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals));
/** /**
* @dev Constructor that gives msg.sender all of existing tokens. * @dev Constructor that gives sender all of existing tokens.
*/ */
function initialize() public initializer { function initialize(address sender) public initializer {
_mint(msg.sender, INITIAL_SUPPLY); _mint(sender, INITIAL_SUPPLY);
} }
} }
...@@ -14,8 +14,8 @@ contract Pausable is Initializable, PauserRole { ...@@ -14,8 +14,8 @@ contract Pausable is Initializable, PauserRole {
bool private _paused = false; bool private _paused = false;
function initialize() public initializer { function initialize(address sender) public initializer {
PauserRole.initialize(); PauserRole.initialize(sender);
} }
/** /**
......
...@@ -24,7 +24,7 @@ contract TargetMock is Target { ...@@ -24,7 +24,7 @@ contract TargetMock is Target {
contract BreakInvariantBountyMock is BreakInvariantBounty { contract BreakInvariantBountyMock is BreakInvariantBounty {
constructor() public { constructor() public {
BreakInvariantBounty.initialize(); BreakInvariantBounty.initialize(msg.sender);
} }
function _deployContract() internal returns (address) { function _deployContract() internal returns (address) {
......
...@@ -5,7 +5,7 @@ import "../access/roles/CapperRole.sol"; ...@@ -5,7 +5,7 @@ import "../access/roles/CapperRole.sol";
contract CapperRoleMock is CapperRole { contract CapperRoleMock is CapperRole {
constructor() public { constructor() public {
CapperRole.initialize(); CapperRole.initialize(msg.sender);
} }
function removeCapper(address account) public { function removeCapper(address account) public {
......
...@@ -8,7 +8,7 @@ contract ConditionalEscrowMock is ConditionalEscrow { ...@@ -8,7 +8,7 @@ contract ConditionalEscrowMock is ConditionalEscrow {
mapping(address => bool) private _allowed; mapping(address => bool) private _allowed;
constructor() public { constructor() public {
ConditionalEscrow.initialize(); ConditionalEscrow.initialize(msg.sender);
} }
function setAllowed(address payee, bool allowed) public { function setAllowed(address payee, bool allowed) public {
......
...@@ -7,7 +7,7 @@ import "./MinterRoleMock.sol"; ...@@ -7,7 +7,7 @@ import "./MinterRoleMock.sol";
contract ERC20CappedMock is ERC20Capped, MinterRoleMock { contract ERC20CappedMock is ERC20Capped, MinterRoleMock {
constructor(uint256 cap) public { constructor(uint256 cap) public {
ERC20Capped.initialize(cap); ERC20Capped.initialize(cap, msg.sender);
} }
} }
...@@ -7,7 +7,6 @@ import "./MinterRoleMock.sol"; ...@@ -7,7 +7,6 @@ import "./MinterRoleMock.sol";
contract ERC20MintableMock is ERC20Mintable, MinterRoleMock { contract ERC20MintableMock is ERC20Mintable, MinterRoleMock {
constructor() public { constructor() public {
ERC20Mintable.initialize(); ERC20Mintable.initialize(msg.sender);
} }
} }
...@@ -8,7 +8,7 @@ import "./PauserRoleMock.sol"; ...@@ -8,7 +8,7 @@ import "./PauserRoleMock.sol";
contract ERC20PausableMock is ERC20Pausable, PauserRoleMock { contract ERC20PausableMock is ERC20Pausable, PauserRoleMock {
constructor(address initialAccount, uint initialBalance) public { constructor(address initialAccount, uint initialBalance) public {
ERC20Pausable.initialize(); ERC20Pausable.initialize(msg.sender);
_mint(initialAccount, initialBalance); _mint(initialAccount, initialBalance);
} }
......
...@@ -15,7 +15,8 @@ contract ERC721FullMock is ERC721Full, ERC721Mintable, ERC721MetadataMintable, E ...@@ -15,7 +15,8 @@ contract ERC721FullMock is ERC721Full, ERC721Mintable, ERC721MetadataMintable, E
constructor(string name, string symbol) public constructor(string name, string symbol) public
{ {
ERC721Full.initialize(name, symbol); ERC721Full.initialize(name, symbol);
ERC721Mintable.initialize(); ERC721Mintable.initialize(msg.sender);
ERC721MetadataMintable.initialize(msg.sender);
ERC721Burnable.initialize(); ERC721Burnable.initialize();
} }
......
...@@ -16,8 +16,8 @@ contract ERC721MintableBurnableImpl ...@@ -16,8 +16,8 @@ contract ERC721MintableBurnableImpl
public public
{ {
ERC721Full.initialize("Test", "TEST"); ERC721Full.initialize("Test", "TEST");
ERC721Mintable.initialize(); ERC721Mintable.initialize(msg.sender);
ERC721MetadataMintable.initialize(); ERC721MetadataMintable.initialize(msg.sender);
ERC721Burnable.initialize(); ERC721Burnable.initialize();
} }
} }
...@@ -10,7 +10,7 @@ import "./PauserRoleMock.sol"; ...@@ -10,7 +10,7 @@ import "./PauserRoleMock.sol";
*/ */
contract ERC721PausableMock is ERC721Pausable, PauserRoleMock { contract ERC721PausableMock is ERC721Pausable, PauserRoleMock {
constructor() { constructor() {
ERC721Pausable.initialize(); ERC721Pausable.initialize(msg.sender);
} }
function mint(address to, uint256 tokenId) public { function mint(address to, uint256 tokenId) public {
......
...@@ -4,6 +4,6 @@ import "../payment/Escrow.sol"; ...@@ -4,6 +4,6 @@ import "../payment/Escrow.sol";
contract EscrowMock is Escrow { contract EscrowMock is Escrow {
constructor() public { constructor() public {
Escrow.initialize(); Escrow.initialize(msg.sender);
} }
} }
...@@ -16,6 +16,6 @@ contract IndividuallyCappedCrowdsaleImpl ...@@ -16,6 +16,6 @@ contract IndividuallyCappedCrowdsaleImpl
public public
{ {
Crowdsale.initialize(rate, wallet, token); Crowdsale.initialize(rate, wallet, token);
IndividuallyCappedCrowdsale.initialize(); IndividuallyCappedCrowdsale.initialize(msg.sender);
} }
} }
...@@ -5,7 +5,7 @@ import "../access/roles/MinterRole.sol"; ...@@ -5,7 +5,7 @@ import "../access/roles/MinterRole.sol";
contract MinterRoleMock is MinterRole { contract MinterRoleMock is MinterRole {
constructor() public { constructor() public {
MinterRole.initialize(); MinterRole.initialize(msg.sender);
} }
function removeMinter(address account) public { function removeMinter(address account) public {
......
...@@ -3,8 +3,7 @@ pragma solidity ^0.4.24; ...@@ -3,8 +3,7 @@ pragma solidity ^0.4.24;
import { Ownable } from "../ownership/Ownable.sol"; import { Ownable } from "../ownership/Ownable.sol";
contract OwnableMock is Ownable { contract OwnableMock is Ownable {
constructor() { constructor() {
Ownable.initialize(); Ownable.initialize(msg.sender);
} }
} }
...@@ -10,7 +10,7 @@ contract PausableMock is Pausable, PauserRoleMock { ...@@ -10,7 +10,7 @@ contract PausableMock is Pausable, PauserRoleMock {
uint256 public count; uint256 public count;
constructor() public { constructor() public {
Pausable.initialize(); Pausable.initialize(msg.sender);
drasticMeasureTaken = false; drasticMeasureTaken = false;
count = 0; count = 0;
......
...@@ -5,7 +5,7 @@ import "../access/roles/PauserRole.sol"; ...@@ -5,7 +5,7 @@ import "../access/roles/PauserRole.sol";
contract PauserRoleMock is PauserRole { contract PauserRoleMock is PauserRole {
constructor() public { constructor() public {
PauserRole.initialize(); PauserRole.initialize(msg.sender);
} }
function removePauser(address account) public { function removePauser(address account) public {
......
...@@ -4,6 +4,6 @@ import "../payment/RefundEscrow.sol"; ...@@ -4,6 +4,6 @@ import "../payment/RefundEscrow.sol";
contract RefundEscrowMock is RefundEscrow { contract RefundEscrowMock is RefundEscrow {
constructor(address beneficiary) public { constructor(address beneficiary) public {
RefundEscrow.initialize(beneficiary); RefundEscrow.initialize(beneficiary, msg.sender);
} }
} }
...@@ -5,7 +5,7 @@ import "../examples/SampleCrowdsale.sol"; ...@@ -5,7 +5,7 @@ import "../examples/SampleCrowdsale.sol";
contract SampleCrowdsaleTokenMock is SampleCrowdsaleToken { contract SampleCrowdsaleTokenMock is SampleCrowdsaleToken {
constructor() public { constructor() public {
SampleCrowdsaleToken.initialize(); SampleCrowdsaleToken.initialize(msg.sender);
} }
} }
......
...@@ -5,7 +5,7 @@ import "../ownership/Secondary.sol"; ...@@ -5,7 +5,7 @@ import "../ownership/Secondary.sol";
contract SecondaryMock is Secondary { contract SecondaryMock is Secondary {
constructor() public { constructor() public {
Secondary.initialize(); Secondary.initialize(msg.sender);
} }
function onlyPrimaryMock() public view onlyPrimary { function onlyPrimaryMock() public view onlyPrimary {
......
...@@ -6,7 +6,7 @@ import "./SignerRoleMock.sol"; ...@@ -6,7 +6,7 @@ import "./SignerRoleMock.sol";
contract SignatureBouncerMock is SignatureBouncer, SignerRoleMock { contract SignatureBouncerMock is SignatureBouncer, SignerRoleMock {
constructor() public { constructor() public {
SignatureBouncer.initialize(); SignatureBouncer.initialize(msg.sender);
} }
function checkValidSignature(address account, bytes signature) function checkValidSignature(address account, bytes signature)
......
...@@ -5,7 +5,7 @@ import "../access/roles/SignerRole.sol"; ...@@ -5,7 +5,7 @@ import "../access/roles/SignerRole.sol";
contract SignerRoleMock is SignerRole { contract SignerRoleMock is SignerRole {
constructor() public { constructor() public {
SignerRole.initialize(); SignerRole.initialize(msg.sender);
} }
function removeSigner(address account) public { function removeSigner(address account) public {
......
...@@ -4,6 +4,6 @@ import "../examples/SimpleToken.sol"; ...@@ -4,6 +4,6 @@ import "../examples/SimpleToken.sol";
contract SimpleTokenMock is SimpleToken { contract SimpleTokenMock is SimpleToken {
constructor() public { constructor() public {
SimpleToken.initialize(); SimpleToken.initialize(msg.sender);
} }
} }
...@@ -15,7 +15,8 @@ contract TokenVestingMock is TokenVesting { ...@@ -15,7 +15,8 @@ contract TokenVestingMock is TokenVesting {
start, start,
cliffDuration, cliffDuration,
duration, duration,
revocable revocable,
msg.sender
); );
} }
} }
...@@ -22,8 +22,8 @@ contract Ownable is Initializable { ...@@ -22,8 +22,8 @@ contract Ownable is Initializable {
* @dev The Ownable constructor sets the original `owner` of the contract to the sender * @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account. * account.
*/ */
function initialize() public initializer { function initialize(address sender) public initializer {
_owner = msg.sender; _owner = sender;
} }
/** /**
......
...@@ -12,8 +12,8 @@ contract Secondary is Initializable { ...@@ -12,8 +12,8 @@ contract Secondary is Initializable {
/** /**
* @dev Sets the primary account to the one that is creating the Secondary contract. * @dev Sets the primary account to the one that is creating the Secondary contract.
*/ */
function initialize() public initializer { function initialize(address sender) public initializer {
_primary = msg.sender; _primary = sender;
} }
/** /**
......
...@@ -9,8 +9,8 @@ import "./Escrow.sol"; ...@@ -9,8 +9,8 @@ import "./Escrow.sol";
* @dev Base abstract escrow to only allow withdrawal if a condition is met. * @dev Base abstract escrow to only allow withdrawal if a condition is met.
*/ */
contract ConditionalEscrow is Initializable, Escrow { contract ConditionalEscrow is Initializable, Escrow {
function initialize() public initializer { function initialize(address sender) public initializer {
Escrow.initialize(); Escrow.initialize(sender);
} }
/** /**
......
...@@ -20,8 +20,8 @@ contract Escrow is Initializable, Secondary { ...@@ -20,8 +20,8 @@ contract Escrow is Initializable, Secondary {
mapping(address => uint256) private _deposits; mapping(address => uint256) private _deposits;
function initialize() public initializer { function initialize(address sender) public initializer {
Secondary.initialize(); Secondary.initialize(sender);
} }
function depositsOf(address payee) public view returns (uint256) { function depositsOf(address payee) public view returns (uint256) {
......
...@@ -16,7 +16,7 @@ contract PullPayment is Initializable { ...@@ -16,7 +16,7 @@ contract PullPayment is Initializable {
// conditional added to make initializer idempotent in case of diamond inheritance // conditional added to make initializer idempotent in case of diamond inheritance
if (address(_escrow) == address(0)) { if (address(_escrow) == address(0)) {
_escrow = new Escrow(); _escrow = new Escrow();
_escrow.initialize(); _escrow.initialize(address(this));
} }
} }
......
...@@ -23,9 +23,8 @@ contract RefundEscrow is Initializable, ConditionalEscrow { ...@@ -23,9 +23,8 @@ contract RefundEscrow is Initializable, ConditionalEscrow {
* @dev Constructor. * @dev Constructor.
* @param beneficiary The beneficiary of the deposits. * @param beneficiary The beneficiary of the deposits.
*/ */
function initialize(address beneficiary) public initializer { function initialize(address beneficiary, address sender) public initializer {
Secondary.initialize(); ConditionalEscrow.initialize(sender);
ConditionalEscrow.initialize();
require(beneficiary != address(0)); require(beneficiary != address(0));
_beneficiary = beneficiary; _beneficiary = beneficiary;
......
...@@ -12,11 +12,11 @@ contract ERC20Capped is Initializable, ERC20Mintable { ...@@ -12,11 +12,11 @@ contract ERC20Capped is Initializable, ERC20Mintable {
uint256 private _cap; uint256 private _cap;
function initialize(uint256 cap) function initialize(uint256 cap, address sender)
public public
initializer initializer
{ {
ERC20Mintable.initialize(); ERC20Mintable.initialize(sender);
require(cap > 0); require(cap > 0);
_cap = cap; _cap = cap;
......
...@@ -10,8 +10,8 @@ import "../../access/roles/MinterRole.sol"; ...@@ -10,8 +10,8 @@ import "../../access/roles/MinterRole.sol";
* @dev ERC20 minting logic * @dev ERC20 minting logic
*/ */
contract ERC20Mintable is Initializable, ERC20, MinterRole { contract ERC20Mintable is Initializable, ERC20, MinterRole {
function initialize() public initializer { function initialize(address sender) public initializer {
MinterRole.initialize(); MinterRole.initialize(sender);
} }
/** /**
......
...@@ -11,8 +11,8 @@ import "../../lifecycle/Pausable.sol"; ...@@ -11,8 +11,8 @@ import "../../lifecycle/Pausable.sol";
**/ **/
contract ERC20Pausable is Initializable, ERC20, Pausable { contract ERC20Pausable is Initializable, ERC20, Pausable {
function initialize() public initializer { function initialize(address sender) public initializer {
Pausable.initialize(); Pausable.initialize(sender);
} }
function transfer( function transfer(
......
...@@ -10,9 +10,9 @@ import "../../access/roles/MinterRole.sol"; ...@@ -10,9 +10,9 @@ import "../../access/roles/MinterRole.sol";
* @dev ERC721 minting logic with metadata * @dev ERC721 minting logic with metadata
*/ */
contract ERC721MetadataMintable is Initializable, ERC721, ERC721Metadata, MinterRole { contract ERC721MetadataMintable is Initializable, ERC721, ERC721Metadata, MinterRole {
function initialize() public initializer { function initialize(address sender) public initializer {
ERC721.initialize(); ERC721.initialize();
MinterRole.initialize(); MinterRole.initialize(sender);
} }
/** /**
......
...@@ -10,9 +10,9 @@ import "../../access/roles/MinterRole.sol"; ...@@ -10,9 +10,9 @@ import "../../access/roles/MinterRole.sol";
* @dev ERC721 minting logic * @dev ERC721 minting logic
*/ */
contract ERC721Mintable is Initializable, ERC721, MinterRole { contract ERC721Mintable is Initializable, ERC721, MinterRole {
function initialize() public initializer { function initialize(address sender) public initializer {
ERC721.initialize(); ERC721.initialize();
MinterRole.initialize(); MinterRole.initialize(sender);
} }
/** /**
......
...@@ -10,9 +10,9 @@ import "../../lifecycle/Pausable.sol"; ...@@ -10,9 +10,9 @@ import "../../lifecycle/Pausable.sol";
* @dev ERC721 modified with pausable transfers. * @dev ERC721 modified with pausable transfers.
**/ **/
contract ERC721Pausable is Initializable, ERC721, Pausable { contract ERC721Pausable is Initializable, ERC721, Pausable {
function initialize() public initializer { function initialize(address sender) public initializer {
ERC721.initialize(); ERC721.initialize();
Pausable.initialize(); Pausable.initialize(sender);
} }
function approve( function approve(
......
...@@ -5,13 +5,13 @@ const { shouldBehaveLikeOwnable } = require('./Ownable.behavior'); ...@@ -5,13 +5,13 @@ const { shouldBehaveLikeOwnable } = require('./Ownable.behavior');
const Ownable = artifacts.require('OwnableMock'); const Ownable = artifacts.require('OwnableMock');
contract('Ownable', function ([_, owner, ...otherAccounts]) { contract('Ownable', function ([_, owner, anyone, ...otherAccounts]) {
beforeEach(async function () { beforeEach(async function () {
this.ownable = await Ownable.new({ from: owner }); this.ownable = await Ownable.new({ from: owner });
}); });
it('cannot be reinitialized', async function () { it('cannot be reinitialized', async function () {
await expectThrow(this.ownable.initialize(), EVMRevert); await expectThrow(this.ownable.initialize(anyone), EVMRevert);
}); });
shouldBehaveLikeOwnable(owner, otherAccounts); shouldBehaveLikeOwnable(owner, otherAccounts);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment