summaryrefslogtreecommitdiffstats
path: root/openpgp/src/parse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openpgp/src/parse.rs')
-rw-r--r--openpgp/src/parse.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/openpgp/src/parse.rs b/openpgp/src/parse.rs
index e84cca47..6121ef31 100644
--- a/openpgp/src/parse.rs
+++ b/openpgp/src/parse.rs
@@ -394,12 +394,7 @@ macro_rules! make_php_try {
Err(e) => e,
};
let e = match e.downcast::<Error>() {
- Ok(e) => match e {
- Error::MalformedMPI(_) =>
- return $parser.error(e.into()),
- _ =>
- e.into(),
- },
+ Ok(e) => return $parser.error(e.into()),
Err(e) => e,
};
@@ -5519,4 +5514,17 @@ mod test {
panic!("expected unknown packet, got: {:?}", packet);
}
}
+
+ /// Malformed subpackets must not cause a hard parsing error.
+ #[test]
+ fn malformed_embedded_signature() -> Result<()> {
+ let ppr = PacketParser::from_bytes(
+ crate::tests::file("edge-cases/malformed-embedded-sig.pgp"))?;
+ let packet = &ppr.unwrap().packet;
+ if let Packet::Unknown(_) = packet {
+ Ok(())
+ } else {
+ panic!("expected unknown packet, got: {:?}", packet);
+ }
+ }
}