The function relies on gmxReader.getPositionInfo() and dataStore without ensuring real-time price updates, leading to potentially outdated position values.
The VaultReader contract uses prices.shortTokenPrice.min and prices.longTokenPrice.min, which may be stale if not updated frequently.
Borrowing fees and funding fees are subtracted without verifying time-based freshness.
Call getPositionInfo() multiple times without updating dataStore.
Compare results with on-chain updated prices.
If price changes are not reflected, the data is stale.
Users may see incorrect liquidation warnings.
Delayed position updates can cause traders to enter bad trades.
If borrowing fees are not updated, the vault might be under/over-compensating.
Manual Review
Foundry
Ensure real-time price updates before position calculations.
Implement on-chain timestamp validation for price freshness.
Use Chainlink oracles to verify updated price feeds.
There is no real proof, concrete root cause, specific impact, or enough details in those submissions. Examples include: "It could happen" without specifying when, "If this impossible case happens," "Unexpected behavior," etc. Make a Proof of Concept (PoC) using external functions and realistic parameters. Do not test only the internal function where you think you found something.
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.