Skip to content

Commit b85a72b

Browse files
authored
Merge pull request #52 from yieldnest/chad/sc-319/audit-6-10-disable-initializers
Fix Audit 6.10 Disable initializers
2 parents 16d2d0c + a0938f1 commit b85a72b

File tree

4 files changed

+34
-13
lines changed

4 files changed

+34
-13
lines changed

src/RewardsReceiver.sol

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ contract RewardsReceiver is Initializable, AccessControlUpgradeable {
3131
//---------------------------------- INITIALIZATION ----------------------------------
3232
//--------------------------------------------------------------------------------------
3333

34+
constructor() {
35+
_disableInitializers();
36+
}
37+
3438
/// @notice Configuration for contract initialization.
3539
struct Init {
3640
address admin;

src/ynETH.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ contract ynETH is IynETH, ynBase, IStakingEvents {
5757
address[] pauseWhitelist;
5858
}
5959

60-
constructor(
61-
) {
60+
constructor() {
6261
_disableInitializers();
6362
}
6463

test/foundry/integration/IntegrationBaseTest.sol

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,21 +103,34 @@ contract IntegrationBaseTest is Test, Utils {
103103
TransparentUpgradeableProxy rewardsDistributorProxy;
104104
TransparentUpgradeableProxy stakingNodesManagerProxy;
105105
TransparentUpgradeableProxy yieldNestOracleProxy;
106+
TransparentUpgradeableProxy executionLayerReceiverProxy;
107+
TransparentUpgradeableProxy consensusLayerReceiverProxy;
108+
106109
// Initializing RewardsDistributor contract and creating its proxy
107110
rewardsDistributor = new RewardsDistributor();
108111
yneth = new ynETH();
109112
stakingNodesManager = new StakingNodesManager();
110113
yieldNestOracle = new YieldNestOracle();
111114
ynlsd = new ynLSD();
112115

116+
executionLayerReceiver = new RewardsReceiver();
117+
consensusLayerReceiver = new RewardsReceiver();
118+
113119
rewardsDistributorProxy = new TransparentUpgradeableProxy(address(rewardsDistributor), actors.PROXY_ADMIN_OWNER, "");
114120
rewardsDistributor = RewardsDistributor(payable(rewardsDistributorProxy));
115121

122+
116123
ynethProxy = new TransparentUpgradeableProxy(address(yneth), actors.PROXY_ADMIN_OWNER, "");
117124
stakingNodesManagerProxy = new TransparentUpgradeableProxy(address(stakingNodesManager), actors.PROXY_ADMIN_OWNER, "");
118125
yieldNestOracleProxy = new TransparentUpgradeableProxy(address(yieldNestOracle), actors.PROXY_ADMIN_OWNER, "");
119126
ynLSDProxy = new TransparentUpgradeableProxy(address(ynlsd), actors.PROXY_ADMIN_OWNER, "");
120127

128+
executionLayerReceiverProxy = new TransparentUpgradeableProxy(address(executionLayerReceiver), actors.PROXY_ADMIN_OWNER, "");
129+
consensusLayerReceiverProxy = new TransparentUpgradeableProxy(address(consensusLayerReceiver), actors.PROXY_ADMIN_OWNER, "");
130+
131+
executionLayerReceiver = RewardsReceiver(payable(executionLayerReceiverProxy));
132+
consensusLayerReceiver = RewardsReceiver(payable(consensusLayerReceiverProxy));
133+
121134
// Wrapping proxies with their respective interfaces
122135
yneth = ynETH(payable(ynethProxy));
123136
stakingNodesManager = StakingNodesManager(payable(stakingNodesManagerProxy));
@@ -173,17 +186,7 @@ contract IntegrationBaseTest is Test, Utils {
173186
}
174187

175188
function setupRewardsDistributor() public {
176-
executionLayerReceiver = new RewardsReceiver();
177-
consensusLayerReceiver = new RewardsReceiver();
178-
RewardsDistributor.Init memory rewardsDistributorInit = RewardsDistributor.Init({
179-
admin: actors.ADMIN,
180-
executionLayerReceiver: executionLayerReceiver,
181-
consensusLayerReceiver: consensusLayerReceiver,
182-
feesReceiver: payable(actors.FEE_RECEIVER),
183-
ynETH: IynETH(address(yneth))
184-
});
185189

186-
rewardsDistributor.initialize(rewardsDistributorInit);
187190
RewardsReceiver.Init memory rewardsReceiverInit = RewardsReceiver.Init({
188191
admin: actors.ADMIN,
189192
withdrawer: address(rewardsDistributor)
@@ -192,6 +195,15 @@ contract IntegrationBaseTest is Test, Utils {
192195
executionLayerReceiver.initialize(rewardsReceiverInit);
193196
consensusLayerReceiver.initialize(rewardsReceiverInit);
194197
vm.stopPrank();
198+
199+
RewardsDistributor.Init memory rewardsDistributorInit = RewardsDistributor.Init({
200+
admin: actors.ADMIN,
201+
executionLayerReceiver: executionLayerReceiver,
202+
consensusLayerReceiver: consensusLayerReceiver,
203+
feesReceiver: payable(actors.FEE_RECEIVER),
204+
ynETH: IynETH(address(yneth))
205+
});
206+
rewardsDistributor.initialize(rewardsDistributorInit);
195207
}
196208

197209
function setupStakingNodesManager() public {

test/foundry/integration/StakingNodesManager.t.sol

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,11 +505,17 @@ contract StakingNodesManagerValidators is IntegrationBaseTest {
505505
(IStakingNodesManager.ValidatorData[] memory validatorData,) = makeTestValidators(depositAmount);
506506
// try to create a bad deposit root
507507
bytes32 depositRoot = depositContractEth2.get_deposit_root();
508+
bytes memory withdrawalCredentials = stakingNodesManager.getWithdrawalCredentials(validatorData[0].nodeId);
508509

510+
bytes32 depositDataRoot = stakingNodesManager.generateDepositRoot(
511+
validatorData[0].publicKey,
512+
validatorData[0].signature,
513+
withdrawalCredentials, 32 ether
514+
);
509515
vm.prank(actors.VALIDATOR_MANAGER);
510516
vm.expectRevert(abi.encodeWithSelector(
511517
StakingNodesManager.DepositDataRootMismatch.selector,
512-
0x7be1a5aee0180c84f2d1b0ef721fb62bf323ee9aabeac0bd5bb551da1782f805,
518+
depositDataRoot,
513519
validatorData[0].depositDataRoot)
514520
);
515521
stakingNodesManager.registerValidators(depositRoot, validatorData);

0 commit comments

Comments
 (0)