Relevant GitHub Links
Summary
The
afterWithdrawChecks check is very important to be sure that important health parameters are in the proper ranges. But the check is inside brackets of the if user wants to withdraw in tokenA/B statement. So if the user wants to withdraw LP-token the check is not provided. This can cause unexpected financial losses.Vulnerability Details
The
afterWithdrawChecks check is placed inside the brackets of the if-statement of the GMXProcessWithdraw.processWithdraw function. This statement checks if user wants to withdraw in tokenA/B. In other cases the afterWithdrawChecks check is not provided but should.plain text69 // Else if user wants to withdraw in LP token, the tokensToUser is already previously 70 // set in GMXWithdraw.withdraw() 71 if ( 72 self.withdrawCache.withdrawParams.token == address(self.tokenA) || 73 self.withdrawCache.withdrawParams.token == address(self.tokenB) 74 ) { 104 GMXChecks.afterWithdrawChecks(self); 105 } 106 }
Impact
The issue can cause unexpected financial losses.
Tools used
Manual Review
Recommendations
I suppose that the check should be placed after the if statement brackets.