Commit 53adf0e6 authored by Benjamin Fry's avatar Benjamin Fry Committed by Bastian Köcher
Browse files

delay return until after forgets

parent 6abac82f
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -121,13 +121,15 @@ impl X509StoreContextRef {
        unsafe {
            ffi::init();
            let context = try!(cvt_p(ffi::X509_STORE_CTX_new()).map(|p| X509StoreContext(p)));
            try!(cvt(ffi::X509_STORE_CTX_init(context.as_ptr(), trust.as_ptr(), cert.as_ptr(), cert_chain.as_ptr()))
                .map(|_| ()));
            let init_result = cvt(ffi::X509_STORE_CTX_init(context.as_ptr(), trust.as_ptr(), cert.as_ptr(), cert_chain.as_ptr()))
                .map(|_| ());

            mem::forget(trust);
            mem::forget(cert);
            mem::forget(cert_chain);

            try!(init_result);

            // verify_cert returns an error `<= 0` if there was a validation error
            try!(cvt(ffi::X509_verify_cert(context.as_ptr())).map(|_| ()));