`stopRent()` doesn't allow the lender to specify an address to receive the rental payment tokens at, leading to permanent freezal of rental if the lender's address was blacklisted in the token's blacklist.
Audit: 2024-01-renft-findings
Severity: MEDIUM

# Lines of code

https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/policies/Stop.sol#L265


# Vulnerability details

### Pre-requisite knowledge & an overview of the features in question
---

1. **ERC20 Tokens with blocklists**: Some tokens (e.g. USDC, USDT) have a contract level admin controlled address blocklist. If an address is blocked, then transfers to and from that address are forbidden.


---
### The Vulnerability & Exploitation Steps

---
The vulnerability exists in [`stopRent()`](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/policies/Stop.sol#L265) function in the [Stop.sol](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/policies/Stop.sol) contract. `stopRent()` is the function responsible for stopping rental orders. For example, if its a `BASE` order, and it has expired, then anybody can call this function to stop the rental.

Once the function is called, it'll call the function [`_reclaimRentedItems()`](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/policies/Stop.sol#L353) which will reclaim the rented items, in other words, it'll move the assets from the borrower's rental safe to the lender. Then it will call [`settlePayment()`](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/modules/PaymentEscrow.sol#L320) in the [PaymentEscrow.sol](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/modules/PaymentEscrow.sol) contract and give the his share of the ERC20 tokens.

The problem is that the [`stopRent()`](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/policies/Stop.sol#L265) does not let the lender specify an address to receive the ERC20 tokens at after stopping the rental. 
This will cause a big issue if the lender's address was added to the token's blacklist for any reason. If this happened, then the rental will be permanently frozen. The borrower will get to keep the NFT he borrowed from the lender forever, and the lender won't even be able to get the funds he should have received in return for renting the NFT to the borrower.

This issue would occur because [`stopRent()`](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/policies/Stop.sol#L265) would revert everytime the lender calls it, even after the rental has expired. It would revert because [`stopRent()`](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/policies/Stop.sol#L265) will try to call [`settlePayment()`](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/modules/PaymentEscrow.sol#L320) to send the lender his payment, but [`settlePayment()`](https://github.com/re-nft/smart-contracts/blob/3ddd32455a849c3c6dc3c3aad7a33a6c9b44c291/src/modules/Payme