try to remove re-entrancy from withdraw function

Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
This commit is contained in:
Uncle Fatso 2025-06-27 20:37:10 +03:00
parent 3f0d1fb02e
commit 3bb6904f54
Signed by: f4ts0
GPG Key ID: 565F4F2860226EBB

View File

@ -20,11 +20,11 @@ contract Reserve is ERC20Permit {
} }
fallback() external payable { fallback() external payable {
_innerMint(msg.sender, msg.value); _mint(msg.sender, msg.value);
} }
receive() external payable { receive() external payable {
_innerMint(msg.sender, msg.value); _mint(msg.sender, msg.value);
} }
function changeRate(uint256 rate) external { function changeRate(uint256 rate) external {
@ -39,13 +39,16 @@ contract Reserve is ERC20Permit {
function withdraw(address payable receiver) external { function withdraw(address payable receiver) external {
if (msg.sender != _owner) revert OnlyOwner(); if (msg.sender != _owner) revert OnlyOwner();
(bool sent,) = receiver.call{ value: accumulatedDonation }(""); uint256 accumulatedDonationCached = accumulatedDonation;
accumulatedDonation = 0;
(bool sent,) = receiver.call{ value: accumulatedDonationCached }("");
require(sent, "Failed to send Ether"); require(sent, "Failed to send Ether");
} }
function superMint(address account, uint256 value) external { function superMint(address account, uint256 value) external {
if (msg.sender != _owner) revert OnlyOwner(); if (msg.sender != _owner) revert OnlyOwner();
_innerMint(account, value); _mint(account, value);
} }
function mint(address account) external payable { function mint(address account) external payable {