synapsecns / sanguine

Synapse Monorepo
MIT License
37 stars 30 forks source link

[rfq] Do not approve to both synapse_cctp and token messenger #2405

Open trajan0x opened 7 months ago

trajan0x commented 7 months ago

Currently, we approve to both, so if one is not set we get a revert on 0 addresses.

image

Also should not try to approve at all to 0 address

greptile-apps[bot] commented 4 months ago

To resolve the issue of approving to both synapse_cctp and token messenger, follow these steps:

  1. Update approveToken function in /packages/synapse-interface/utils/approveToken.tsx:

    • Add a check to ensure address and tokenAddress are not zero addresses before calling approveErc20Token.
      if (address === zeroAddress || tokenAddress === zeroAddress) {
      throw new Error('Cannot approve to zero address');
      }
  2. Update approveErc20Token function in /packages/synapse-interface/actions/approveErc20Token.ts:

    • Add a check to ensure spender and tokenAddress are not zero addresses before proceeding with the approval.
      if (spender === zeroAddress || tokenAddress === zeroAddress) {
      throw new Error('Cannot approve to zero address');
      }
  3. Update approve function in /packages/synapse-interface/utils/actions/approveAndDeposit.tsx and /packages/synapse-interface/utils/actions/approveAndWithdraw.tsx:

    • Add a check to ensure poolAddress and tokenToApprove are not zero addresses before calling approveToken.
      if (poolAddress === zeroAddress || tokenToApprove === zeroAddress) {
      throw new Error('Cannot approve to zero address');
      }

These changes will prevent approvals to zero addresses and avoid reverts.

References

/packages/synapse-interface/utils/approveToken.tsx /packages/synapse-interface/actions/approveErc20Token.ts /packages/synapse-interface/utils/actions/approveAndDeposit.tsx /packages/synapse-interface/utils/actions/approveAndWithdraw.tsx

Ask Greptile