After calling emergencyClose()
the vault should not be able to be opened again, but this may be because the state check is missing in the emergencyClose()
function.
The GMXVault.sol
should not be reactivated again, after emergencyClose()
and repaying all users, but it may be activated again.
On emergencyClose()
the final state of this vault is changed to GMXTypes.Status.Closed;
but the keeper can call emergencyPause() -> GMXEmergency.sol.emergencyPause()
again since it has no check for the state of the vault as the other functions have.
Because the protocol no longer has LP token, there will be no error when withdrawing liquidity.
After calling EmergencyClose. It has to be a one-way action.
A malicious keeper can deny emergency withdrawal to all users.
Manual Code Review
Add a function called beforeEmergencyPauseChecks()
in GMXChecks.sol
that does the vault status check like the other checks do.
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.