An NFT cannot be liquidated because of the check (msg.sender != stabilityPool) in the NFTLiquidator contract.
The if condition checks whether the caller of the liquidateNFT function is stabilityPool or not. If it is not stabilityPool, it will revert. Hence, only the stabilityPool can call this function to liquidate NFTs.
But in the StabilityPool contract, there is no function call made to the NFTLiquidator contract for the liquidateNFT function.
Because of the if condition, no one other than stabilityPool can call this function.
Since StabilityPool does not call liquidateNFT, the NFT cannot be liquidated.
The user under debt cannot liquidate their NFT, nor can the contract liquidate the user's NFT to prevent over-indebtedness.
Call the liquidateNFT function in the StabilityPool where it is needed.
or remove the if condition to call the function from other contracts, or directly by user.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.