# CEthInterface#repayBorrowBehalf() reading non-existing returns makes  _repayAnyDebt() with CEther always revert

Backd's CEthInterface declares repayBorrowBehalf returns uint256, but Compound's CEther returns nothing, so ether debt repayment always reverts.

- Payout: Audit contest
- Severity: medium
- Program: Backd
- Credited: WatchPug
- Disclosed: 2022-06-02
- Write-up quality: 6/10
- Original: https://github.com/code-423n4/2022-04-backd-findings/issues/121
- Library page: https://bugbountylibrary.com/r/c4%3A2022-04-backd%3AM-13
- Tags: domain:web3 impact:dos kind:contest platform:code4rena sev:medium tech:evm tech:solidity technique:source-review vuln:dos

**Target:** CompoundHandler.sol / CEthInterface (Compound cToken integration)
**Root cause:** Interface declares repayBorrowBehalf() returns (uint256), but Compound's CEther implementation returns no data; the ABI decoder reverts on the empty return.
**Steps:**
1. Call CompoundHandler._repayAnyDebt() with a CEther cToken address
2. Handler executes `cether.repayBorrowBehalf{value: debt}(account)`
3. CEther returns no data, Solidity ABI decoder expects uint256 and reverts
4. ETH-denominated debt can never be repaid via this path
**How found:** Code-reading of the vendored CTokenInterfaces against Compound's actual CEther/CErc20 implementations; noticed CEther repay functions return nothing while the interface declares a uint256 return.
**Insight:** When integrating Compound-style cTokens, verify each method's return signature against both CEther and CErc20 source; native-token variants often return nothing where ERC20 variants return an error code.
