# AccountManager: Liquidations not possible when transfer fails

AccountManager._liquidate sweeps all account assets; one failing ERC20 transfer reverts the whole liquidation, letting users block liquidation via blacklist or zero-balance tokens.

- Payout: Contest reward
- Severity: medium
- Program: Sentiment
- Credited: panprog
- Disclosed: 2022-08-30
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2022-08-sentiment-judging/tree/main/033-M
- Library page: https://bugbountylibrary.com/r/sherlock%3A2022-08-sentiment%3AM-3
- Tags: domain:web3 impact:dos kind:contest platform:sherlock sev:medium tech:solidity technique:source-review vuln:business-logic vuln:dos vuln:liquidation

**Target:** AccountManager/Account liquidation sweep (sweepTo)
**Root cause:** _liquidate calls sweepTo which iterates over every asset and transfers it; any single reverting transfer (blacklisted address, zero-balance token, paused/upgraded token) reverts the entire liquidation.
**Steps:**
1. Account holds a token whose transfer reverts (e.g. USDC-blacklisted address, or a zero-balance token added via `deposit(amt=0)` or a 0-value Uniswap swap landing in `tokensIn`)
2. Liquidator calls `_liquidate` on the account
3. `sweepTo` iterates assets and the reverting transfer bubbles up
4. Whole liquidation tx reverts; position cannot be liquidated
**How found:** Code reading of _liquidate/sweepTo revealed the unbounded loop over assets with no per-transfer error handling; enumerated real-world revert causes (blacklists, zero-balance tokens, paused/upgradeable tokens) from weird-ERC20 knowledge.
**Exploitation:** A borrower deliberately gets blacklisted (e.g. USDC) or seeds a zero-balance/reverting token into their asset list so that any liquidation attempt reverts, avoiding liquidation of an underwater position.
**Insight:** When auditing liquidation/settlement loops, check whether a single asset transfer revert can DoS the whole path, and whether users can inject a reverting or zero-balance token into their own asset list to self-block liquidation.
