From 913ad79cd9eb15c774da8b2e097d1ed85412fffc Mon Sep 17 00:00:00 2001 From: behzad nouri Date: Tue, 26 Apr 2022 21:10:27 +0000 Subject: [PATCH] patches bug in data-shred index sanitize (#24707) https://github.com/solana-labs/solana/pull/24653 introduced an off-by-one error in data-shred index sanitize. --- ledger/src/shred.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ledger/src/shred.rs b/ledger/src/shred.rs index bb271a5d1..4f8bf082e 100644 --- a/ledger/src/shred.rs +++ b/ledger/src/shred.rs @@ -519,7 +519,7 @@ impl Shred { } match self.shred_type() { ShredType::Data => { - if self.index() as usize > MAX_DATA_SHREDS_PER_SLOT { + if self.index() as usize >= MAX_DATA_SHREDS_PER_SLOT { return Err(Error::InvalidDataShredIndex { index: self.index(), }); @@ -2136,6 +2136,14 @@ mod tests { }) ); } + { + let mut shred = shred.clone(); + shred.common_header.index = MAX_DATA_SHREDS_PER_SLOT as u32; + assert_matches!( + shred.sanitize(), + Err(Error::InvalidDataShredIndex { index: 32768 }) + ); + } { shred.data_header.size = shred.payload().len() as u16 + 1; assert_matches!(