From 00bf98bd0c7154df668cb1e0baee6e7d8fd8ac25 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Wed, 7 Apr 2021 12:52:12 +0200 Subject: openpgp: Improving debugging of SerializeInto::serialized_len. --- openpgp/src/serialize.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/openpgp/src/serialize.rs b/openpgp/src/serialize.rs index 72e6aad2..a0d57572 100644 --- a/openpgp/src/serialize.rs +++ b/openpgp/src/serialize.rs @@ -528,8 +528,12 @@ fn generic_serialize_into(o: &dyn Marshal, serialized_len: usize, false }; return if short_write { - assert!(buf_len < serialized_len, - "o.serialized_len() underestimated the required space"); + if buf_len >= serialized_len { + let mut b = Vec::new(); + let need_len = o.serialize(&mut b).map(|_| b.len()); + panic!("o.serialized_len() = {} underestimated required \ + space, need {:?}", serialized_len, need_len); + } Err(Error::InvalidArgument( format!("Invalid buffer size, expected {}, got {}", serialized_len, buf_len)).into()) @@ -562,8 +566,12 @@ fn generic_export_into(o: &dyn Marshal, serialized_len: usize, false }; return if short_write { - assert!(buf_len < serialized_len, - "o.serialized_len() underestimated the required space"); + if buf_len >= serialized_len { + let mut b = Vec::new(); + let need_len = o.serialize(&mut b).map(|_| b.len()); + panic!("o.serialized_len() = {} underestimated required \ + space, need {:?}", serialized_len, need_len); + } Err(Error::InvalidArgument( format!("Invalid buffer size, expected {}, got {}", serialized_len, buf_len)).into()) -- cgit v1.2.3