fix: use fixed-size slices for protocol data parsing

- Improve borsh deserialization safety across all protocol decoders
- Add MarketState support for raydium_amm_v4
- Prevent buffer overflow in data decoding operations
This commit is contained in:
ysq
2025-08-19 17:37:17 +08:00
parent a9ceaa55d3
commit 915209abd8
9 changed files with 50 additions and 18 deletions
@@ -28,7 +28,7 @@ pub fn bonding_curve_decode(data: &[u8]) -> Option<BondingCurve> {
if data.len() < BONDING_CURVE_SIZE {
return None;
}
borsh::from_slice::<BondingCurve>(&data).ok()
borsh::from_slice::<BondingCurve>(&data[..BONDING_CURVE_SIZE]).ok()
}
pub fn bonding_curve_parser(
@@ -75,7 +75,7 @@ pub fn global_decode(data: &[u8]) -> Option<Global> {
if data.len() < GLOBAL_SIZE {
return None;
}
borsh::from_slice::<Global>(&data).ok()
borsh::from_slice::<Global>(&data[..GLOBAL_SIZE]).ok()
}
pub fn global_parser(