* *<b>id_cert_out</b> respectively. Log all messages at level
* <b>severity</b>.
*
- * Note that a reference is added to cert_out, so it needs to be
- * freed. id_cert_out doesn't. */
+ * Note that a reference is added both of the returned certificates. */
MOCK_IMPL(void,
try_to_extract_certs_from_tls,(int severity, tor_tls_t *tls,
X509 **cert_out, X509 **id_cert_out))
if (X509_cmp(id_cert, cert) != 0)
break;
}
- *id_cert_out = id_cert;
+ *id_cert_out = id_cert ? X509_dup(id_cert) : NULL;
}
/** Return the number of bytes available for reading from <b>tls</b>.
{
(void) severity;
(void) tls;
- *cert_out = fixed_try_to_extract_certs_from_tls_cert_out_result;
- *id_cert_out = fixed_try_to_extract_certs_from_tls_id_cert_out_result;
+ *cert_out = tor_x509_cert_impl_dup_(
+ fixed_try_to_extract_certs_from_tls_cert_out_result);
+ *id_cert_out = tor_x509_cert_impl_dup_(
+ fixed_try_to_extract_certs_from_tls_id_cert_out_result);
}
static void
UNMOCK(try_to_extract_certs_from_tls);
tor_x509_cert_impl_free(cert1);
tor_x509_cert_impl_free(cert2);
+ tor_x509_cert_impl_free(validCert);
+ tor_x509_cert_impl_free(invalidCert);
+ tor_x509_cert_impl_free(caCert);
+
tor_free(tls);
crypto_pk_free(k);
}