The code for releasing DH parameters is common to all credential
subclasses, and the unload function is only called from the
finalizers, except for x509 reload, so can be moved into the
parent with a little update of the reload method.
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
{
QCryptoTLSCreds *creds = QCRYPTO_TLS_CREDS(obj);
+#ifdef CONFIG_GNUTLS
+ if (creds->dh_params) {
+ gnutls_dh_params_deinit(creds->dh_params);
+ }
+#endif
+
g_free(creds->dir);
g_free(creds->priority);
}
creds->data.server = NULL;
}
}
- if (creds->parent_obj.dh_params) {
- gnutls_dh_params_deinit(creds->parent_obj.dh_params);
- creds->parent_obj.dh_params = NULL;
- }
}
#else /* ! CONFIG_GNUTLS */
creds->data.server = NULL;
}
}
- if (creds->parent_obj.dh_params) {
- gnutls_dh_params_deinit(creds->parent_obj.dh_params);
- creds->parent_obj.dh_params = NULL;
- }
}
#else /* ! CONFIG_GNUTLS */
gnutls_certificate_free_credentials(creds->data);
creds->data = NULL;
}
- if (creds->parent_obj.dh_params) {
- gnutls_dh_params_deinit(creds->parent_obj.dh_params);
- creds->parent_obj.dh_params = NULL;
- }
}
qcrypto_tls_creds_x509_load(x509_creds, &local_err);
if (local_err) {
qcrypto_tls_creds_x509_unload(x509_creds);
+ if (creds->dh_params) {
+ gnutls_dh_params_deinit(creds->dh_params);
+ }
x509_creds->data = creds_data;
creds->dh_params = creds_dh_params;
error_propagate(errp, local_err);