Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/ERC20/ERC20/libraries/LibERC20.sol
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ library LibERC20 {
/// @param _needed The required amount to complete the transfer.
error ERC20InsufficientAllowance(address _spender, uint256 _allowance, uint256 _needed);

/// @notice Thrown when the spender address is invalid (e.g., zero address).
/// @param _spender The invalid spender address.
error ERC20InvalidSpender(address _spender);

/// @notice Emitted when tokens are transferred between addresses.
/// @param _from The address tokens are transferred from.
/// @param _to The address tokens are transferred to.
Expand Down Expand Up @@ -152,6 +156,9 @@ library LibERC20 {
/// @param _spender The address to approve for spending.
/// @param _value The amount of tokens to approve.
function approve(address _spender, uint256 _value) internal {
if (_spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
ERC20Storage storage s = getStorage();
s.allowances[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
Expand Down