diff options
Diffstat (limited to 'openpgp/src/parse.rs')
-rw-r--r-- | openpgp/src/parse.rs | 20 |
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); + } + } } |