diff --git a/openssl/src/cms.rs b/openssl/src/cms.rs index d11443b5ce846e03fea5061588f353ca214f3098..a946230a5acb9fe514b4d42f29c13977781a666c 100644 --- a/openssl/src/cms.rs +++ b/openssl/src/cms.rs @@ -475,14 +475,10 @@ mod test { // check verification result - this is an invalid signature // defined in openssl crypto/cms/cms.h const CMS_R_CERTIFICATE_VERIFY_ERROR: i32 = 100; - match res { - Err(es) => { - let error_array = es.errors(); - assert_eq!(1, error_array.len()); - let code = error_array[0].code(); - assert_eq!(ffi::ERR_GET_REASON(code), CMS_R_CERTIFICATE_VERIFY_ERROR); - } - _ => panic!("expected CMS verification error, got Ok()"), - } + let es = res.unwrap_err(); + let error_array = es.errors(); + assert_eq!(1, error_array.len()); + let code = error_array[0].reason_code(); + assert_eq!(code, CMS_R_CERTIFICATE_VERIFY_ERROR); } } diff --git a/openssl/src/provider.rs b/openssl/src/provider.rs index 147fadfdbc4d84b926e8c7c8fc6322615ef9d324..01b5820af5fcac3a0b6709fba5ed7bf63ca7e581 100644 --- a/openssl/src/provider.rs +++ b/openssl/src/provider.rs @@ -55,6 +55,10 @@ impl Provider { retain_fallbacks as _, ))?; + // OSSL_PROVIDER_try_load seems to leave errors on the stack, even + // when it succeeds. + let _ = ErrorStack::get(); + Ok(Provider::from_ptr(p)) } }