Skip to content

Commit 69afe90

Browse files
committed
clean up and guard against negative amm_inventory_limit
1 parent 41fbaa3 commit 69afe90

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

programs/drift/src/instructions/lp_admin.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,10 @@ pub fn handle_override_amm_cache_info<'c: 'info, 'info>(
998998
}
999999

10001000
if let Some(amm_inventory_limit) = override_params.amm_inventory_limit {
1001+
if amm_inventory_limit < 0 {
1002+
msg!("amm_inventory_limit must be non-negative");
1003+
return Err(ErrorCode::DefaultError.into());
1004+
}
10011005
cache_entry.amm_inventory_limit = amm_inventory_limit;
10021006
}
10031007

programs/drift/src/instructions/lp_pool.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,17 @@ pub fn handle_update_constituent_target_base<'c: 'info, 'info>(
131131
}
132132

133133
amm_inventories.push(AmmInventoryAndPrices {
134-
inventory: cache_info
135-
.position
136-
.safe_mul(cache_info.amm_position_scalar as i64)?
137-
.safe_div(100)?
138-
.abs()
139-
.min(cache_info.amm_inventory_limit)
140-
.safe_mul(cache_info.position.signum())?,
134+
inventory: {
135+
let scaled_position = cache_info
136+
.position
137+
.safe_mul(cache_info.amm_position_scalar as i64)?
138+
.safe_div(100)?;
139+
140+
scaled_position.clamp(
141+
-cache_info.amm_inventory_limit,
142+
cache_info.amm_inventory_limit,
143+
)
144+
},
141145
price: cache_info.oracle_price,
142146
});
143147
}

0 commit comments

Comments
 (0)