Skip to content

Commit ccd7b6c

Browse files
authored
Merge pull request #1002 from valentinewallace/2021-07-fix-features-index-bounds
2 parents afae12e + 7497ed2 commit ccd7b6c

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

lightning/src/ln/features.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -490,13 +490,14 @@ impl<T: sealed::Context> Features<T> {
490490
/// Converts `Features<T>` to `Features<C>`. Only known `T` features relevant to context `C` are
491491
/// included in the result.
492492
fn to_context_internal<C: sealed::Context>(&self) -> Features<C> {
493-
let byte_count = C::KNOWN_FEATURE_MASK.len();
493+
let from_byte_count = T::KNOWN_FEATURE_MASK.len();
494+
let to_byte_count = C::KNOWN_FEATURE_MASK.len();
494495
let mut flags = Vec::new();
495496
for (i, byte) in self.flags.iter().enumerate() {
496-
if i < byte_count {
497-
let known_source_features = T::KNOWN_FEATURE_MASK[i];
498-
let known_target_features = C::KNOWN_FEATURE_MASK[i];
499-
flags.push(byte & known_source_features & known_target_features);
497+
if i < from_byte_count && i < to_byte_count {
498+
let from_known_features = T::KNOWN_FEATURE_MASK[i];
499+
let to_known_features = C::KNOWN_FEATURE_MASK[i];
500+
flags.push(byte & from_known_features & to_known_features);
500501
}
501502
}
502503
Features::<C> { flags, mark: PhantomData, }

0 commit comments

Comments
 (0)