fix(event_parser): add discriminator validation for inner instruction parsing

This commit is contained in:
ioxde
2025-09-08 20:53:16 -07:00
parent d219433466
commit 09645ac290
+24
View File
@@ -1026,6 +1026,18 @@ impl EventParser for GenericEventParser {
if !SimdUtils::validate_instruction_data_simd(&inner_instruction.data, 16, 0) {
return Vec::new();
}
// Check if the discriminator matches what we expect for this event type
let discriminator_len = config.inner_instruction_discriminator.len();
if inner_instruction.data.len() < discriminator_len {
return Vec::new();
}
// Validate discriminator matches
if !inner_instruction.data[..discriminator_len].eq(config.inner_instruction_discriminator) {
return Vec::new();
}
let data = &inner_instruction.data[16..];
let mut events = Vec::new();
if let Some(event) = self.parse_inner_instruction_event(
@@ -1062,6 +1074,18 @@ impl EventParser for GenericEventParser {
if !SimdUtils::validate_instruction_data_simd(&inner_instruction.data, 16, 0) {
return Vec::new();
}
// Check if the discriminator matches what we expect for this event type
let discriminator_len = config.inner_instruction_discriminator.len();
if inner_instruction.data.len() < discriminator_len {
return Vec::new();
}
// Validate discriminator matches
if !inner_instruction.data[..discriminator_len].eq(config.inner_instruction_discriminator) {
return Vec::new();
}
let data = &inner_instruction.data[16..];
let mut events = Vec::new();
if let Some(event) = self.parse_inner_instruction_event(