summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2024-02-15 12:31:53 +0100
committerJustus Winter <justus@sequoia-pgp.org>2024-02-20 16:36:47 +0100
commitb84858cc70a8c280d29b3b3c382f01d3e81df328 (patch)
tree706a54a8eb7b87ff7eb93987646fa0ff909106e2
parent01702ef9fa9888d2d506c1ff2ce96410eb0705fd (diff)
openpgp: Add test making sure junk pseudo-packets have a map.
-rw-r--r--openpgp/src/parse.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/openpgp/src/parse.rs b/openpgp/src/parse.rs
index 0a3e1177..e001a3ac 100644
--- a/openpgp/src/parse.rs
+++ b/openpgp/src/parse.rs
@@ -6704,4 +6704,40 @@ heLBX8Pq0kUBwQz2iFAzRwOdgTBvH5KsDU9lmE
.into_keypair()?;
Ok(())
}
+
+ /// Tests that junk pseudo-packets have a proper map when
+ /// buffering is turned on.
+ #[test]
+ #[cfg(feature = "compression-deflate")]
+ fn parse_junk_with_mapping() -> Result<()> {
+ let silly = "-----BEGIN PGP MESSAGE-----
+
+yCsBO81bKqlfklugX5yRX5qTopuXX6KbWpFZXKJXUlGSetb4dXm+gYFBCRcA
+=IHpt
+-----END PGP MESSAGE-----
+";
+ let mut ppr = PacketParserBuilder::from_bytes(silly)?
+ .map(true).buffer_unread_content().build()?;
+ let mut i = 0;
+ while let PacketParserResult::Some(pp) = ppr {
+ assert!(pp.map().unwrap().iter().count() > 0);
+ for f in pp.map().unwrap().iter() {
+ eprintln!("{:?}", f);
+ }
+ ppr = match pp.recurse() {
+ Ok((_, ppr)) => {
+ i += 1;
+ ppr
+ },
+ Err(_) => {
+ // The third packet is a junk pseudo-packet, and
+ // recursing will fail.
+ assert_eq!(i, 2);
+ break;
+ },
+ }
+ }
+ Ok(())
+ }
+
}