diff --git a/lightning/src/util/ser.rs b/lightning/src/util/ser.rs index b93be6446ce..4defe29fe34 100644 --- a/lightning/src/util/ser.rs +++ b/lightning/src/util/ser.rs @@ -960,7 +960,9 @@ macro_rules! impl_for_map { #[inline] fn read(r: &mut R) -> Result { let len: CollectionLength = Readable::read(r)?; - let mut ret = $constr(len.0 as usize); + let entry_size = ::core::mem::size_of::() + ::core::mem::size_of::(); + let max_alloc = MAX_BUF_SIZE / (entry_size + 1); + let mut ret = $constr(cmp::min(len.0 as usize, max_alloc)); for _ in 0..len.0 { let k = K::read(r)?; let v_opt = V::read(r)?;