From 47a55184b517ad32bf0897d48c304d5cb270683b Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Wed, 15 Apr 2020 10:35:59 +0200 Subject: sqv: Improve error reporting when reading keyrings. --- sqv/src/sqv.rs | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) (limited to 'sqv') diff --git a/sqv/src/sqv.rs b/sqv/src/sqv.rs index ce2fbdaa..32d39e8a 100644 --- a/sqv/src/sqv.rs +++ b/sqv/src/sqv.rs @@ -76,23 +76,19 @@ impl<'a> VerificationHelper for VHelper<'a> { // Load relevant keys from the keyring. for filename in self.keyrings.clone() { - certs.extend( - CertParser::from_file(filename)? - .unvalidated_cert_filter(|cert, _| { - // We don't skip keys that are valid (not revoked, - // alive, etc.) so that - cert.keys().key_handles(ids.iter()).next().is_some() - }) - .map(|certr| { - match certr { - Ok(cert) => cert, - Err(err) => { - eprintln!("Error reading keyring {:?}: {}", - filename, err); - exit(2); - } - } - })) + for cert in CertParser::from_file(filename) + .with_context(|| format!("Failed to parse keyring {:?}", + filename))? + .unvalidated_cert_filter(|cert, _| { + // We don't skip keys that are valid (not revoked, + // alive, etc.) so that + cert.keys().key_handles(ids.iter()).next().is_some() + }) + { + certs.push(cert.with_context(|| { + format!("Malformed certificate in keyring {:?}", filename) + })?); + } } // Dedup. To avoid cloning the certificates, we don't use -- cgit v1.2.3