summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2021-04-07 12:52:12 +0200
committerJustus Winter <justus@sequoia-pgp.org>2021-04-08 12:56:15 +0200
commit00bf98bd0c7154df668cb1e0baee6e7d8fd8ac25 (patch)
treef31bd22dc357752fb58ace0aed4a119f3ffc3e88
parenta49be1e7efe20062436e86ca0ded041d83a44372 (diff)
openpgp: Improving debugging of SerializeInto::serialized_len.
-rw-r--r--openpgp/src/serialize.rs16
1 files 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())