<!-- canonical: https://0xsimao.com/findings/clip-finance-ii-unnecessary-abi-decode-custom -->

# Unnecessary abi.decode in PHyperLPoolSwapInside::_swapWithCustomData()

Low/Info · Three Sigma · DeFi infrastructure · 15th March 2024

Finding 3S-Clip-N01 of the Clip Finance Strategy Upgrade security review.

- Protocol: https://www.clip.finance/
- Report: /reports/clip-finance-strategy-upgrade
- Source: https://github.com/0xsimao/audits/blob/main/Three%20Sigma/2024-03-15-clip-finance-ii.pdf

---

### Description

[PHyperLPoolSwapInside::_swapWithCustomData()](https://github.com/ClipFinance/StrategyRouter-private/blob/v3-vault-swap-inside/contracts/liquidityManagment/PHyperLPoolSwapInside.sol#L592) does abi.decode of the returnData,
which is already a bytes variable.

### Recommendation

revert(string(returnData)); should be enough

### Status

Addressed in [#0c8de23](https://github.com/ClipFinance/StrategyRouter-private/commit/0c8de23862d9fed65f3c1a3fc4eac9a0356ef76e#diff-023946f07f510e865612a28a9a222e00f0f6b90a253fd981e9bf4f7656f5497fR600).

Disclosed by 0xSimao (https://0xsimao.com/).

---

Related findings:

- [Redundant abi.decode() in OstiumTradesUpKeep::checkCallback()](https://0xsimao.com/findings/ostium-redundant-abi-decode-callback): Ostium
- [Borrower deposit, withdraw, deposit will reinit `omniChainData.cdsPoolValue`, getting profit stuck for cds depositors](https://0xsimao.com/findings/autonomint-deposit-withdraw-reinit-stuck): Autonomint
- [An attacker can manipulate `omniChainData.cdsPoolValue` by breaking protocol.](https://0xsimao.com/findings/autonomint-manipulate-omni-data-breaking): Autonomint
- [In GReservePool, remove unnecessary logic](https://0xsimao.com/findings/glacier-reserve-remove-unnecessary-logic): Glacier
