Browse Source

Expose `_isTrustedByTarget` internally in ERC2771Forwarder (#5416)

Ernesto García 9 months ago
parent
commit
96b40d02c3
2 changed files with 9 additions and 1 deletions
  1. 5 0
      .changeset/famous-timers-compare.md
  2. 4 1
      contracts/metatx/ERC2771Forwarder.sol

+ 5 - 0
.changeset/famous-timers-compare.md

@@ -0,0 +1,5 @@
+---
+'openzeppelin-solidity': minor
+---
+
+`ERC2771Forwarder`: Expose the `_isTrustedByTarget` internal function to check whether a target trusts the forwarder.

+ 4 - 1
contracts/metatx/ERC2771Forwarder.sol

@@ -302,8 +302,11 @@ contract ERC2771Forwarder is EIP712, Nonces {
      *
      * This function performs a static call to the target contract calling the
      * {ERC2771Context-isTrustedForwarder} function.
+     *
+     * NOTE: Consider the execution of this forwarder is permissionless. Without this check, anyone may transfer assets
+     * that are owned by, or are approved to this forwarder.
      */
-    function _isTrustedByTarget(address target) private view returns (bool) {
+    function _isTrustedByTarget(address target) internal view virtual returns (bool) {
         bytes memory encodedParams = abi.encodeCall(ERC2771Context.isTrustedForwarder, (address(this)));
 
         bool success;