Adversary can abuse hanging approvals left by PSwapLib.swap to bypass reward fees
AuraSpell.sol#L247-L257\\n```\\n        _doCutRewardsFee(sellToken);\\n        if (\\n            expectedRewards[i] != 0 &&\\n            !PSwapLib.swap(\\n                augustusSwapper,\\n                tokenTransferProxy,\\n                sellToken,\\n                expectedRewards[i],\\n                swapDatas[i]\\n            )\\n        ) revert Errors.SWAP_FAILED(sellToken);\\n```\\n\\nAuraSpell#closePositionFarm allows the user to specify any expectedRewards they wish. This allows the user to approve any amount, even if the amount is much larger than they would otherwise use. The can abuse these hanging approvals to swap tokens out of order and avoid paying reward fees.\\nExample: Assume there are two rewards, token A and token B. Over time a user's position accumulates 100 rewards for each token. Normally the user would have to pay fees on those rewards. However they can bypass it by first creating hanging approvals. The user would start by redeeming a very small amount of LP and setting expectedRewards to uint256.max. They wouldn't sell the small amount leaving a very large approval left for both tokens. Now the user withdraws the rest of their position. This time they specify the swap data to swap token B first. The user still has to pay fees on token A but now they have traded token B before any fees can be taken on it.
After the swap reset allowances to 0
User can bypass reward fees
```\\n        _doCutRewardsFee(sellToken);\\n        if (\\n            expectedRewards[i] != 0 &&\\n            !PSwapLib.swap(\\n                augustusSwapper,\\n                tokenTransferProxy,\\n                sellToken,\\n                expectedRewards[i],\\n                swapDatas[i]\\n            )\\n        ) revert Errors.SWAP_FAILED(sellToken);\\n```\\n