ILoan.sol:
function getNextPayment() external view returns (uint256, uint256, uint256, uint256)
Loan.sol:
function getNextPayment() public view returns(uint256, uint256, uint256, uint256, bool)
Such discrepencies appear because implementation contracts do not inherit the interface explicitly (Loan is ILoan), so it does not give compilation errors if the declaration changes.
Recommended Mitigation Steps
Unify the declarations or even better, make the contract inherit from the interface so you can always be sure that these functions are present.
Handle
paulius.eth
Vulnerability details
Vulnerability details
ILoan.sol: function getNextPayment() external view returns (uint256, uint256, uint256, uint256) Loan.sol: function getNextPayment() public view returns(uint256, uint256, uint256, uint256, bool) Such discrepencies appear because implementation contracts do not inherit the interface explicitly (Loan is ILoan), so it does not give compilation errors if the declaration changes.
Recommended Mitigation Steps
Unify the declarations or even better, make the contract inherit from the interface so you can always be sure that these functions are present.