diff --git a/packages/contracts/contracts/escrow/CollateralEscrowV1.sol b/packages/contracts/contracts/escrow/CollateralEscrowV1.sol index 1d1247cae..c3f6d6baf 100644 --- a/packages/contracts/contracts/escrow/CollateralEscrowV1.sol +++ b/packages/contracts/contracts/escrow/CollateralEscrowV1.sol @@ -93,13 +93,17 @@ contract CollateralEscrowV1 is OwnableUpgradeable, ICollateralEscrowV1 { collateral._amount >= _amount, "No collateral balance for asset" ); + + //this comes first to mitigate re-entrancy via checks-effects-interact pattern + collateral._amount -= _amount; + _withdrawCollateral( collateral, _collateralAddress, _amount, _recipient ); - collateral._amount -= _amount; + emit CollateralWithdrawn(_collateralAddress, _amount, _recipient); } diff --git a/packages/contracts/lib/forge-std b/packages/contracts/lib/forge-std index 73a504d2c..2f6762e4f 160000 --- a/packages/contracts/lib/forge-std +++ b/packages/contracts/lib/forge-std @@ -1 +1 @@ -Subproject commit 73a504d2cf6f37b7ce285b479f4c681f76e95f1b +Subproject commit 2f6762e4f73f3d835457c220b5f62dfeeb6f6341