]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
nts: deinit gnutls when setting of credentials fails
authorMiroslav Lichvar <mlichvar@redhat.com>
Wed, 15 Jul 2020 10:11:38 +0000 (12:11 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Thu, 16 Jul 2020 10:06:27 +0000 (12:06 +0200)
This is needed to cleanly exit when the server key/cert couldn't be
loaded.

nts_ke_session.c

index a0ef424d82786792f512e4147c7052aab7ac14c3..7bee46fe72e43612aa17c33c1cad2f1760f45e61 100644 (file)
@@ -622,7 +622,8 @@ init_gnutls(void)
 static void
 deinit_gnutls(void)
 {
-  assert(gnutls_initialised);
+  if (!gnutls_initialised || credentials_counter > 0)
+    return;
 
   LCL_RemoveParameterChangeHandler(handle_step, NULL);
 
@@ -674,6 +675,7 @@ error:
   LOG(LOGS_ERR, "Could not set credentials : %s", gnutls_strerror(r));
   if (credentials)
     gnutls_certificate_free_credentials(credentials);
+  deinit_gnutls();
   return NULL;
 }
 
@@ -684,9 +686,6 @@ NKSN_DestroyCertCredentials(void *credentials)
 {
   gnutls_certificate_free_credentials(credentials);
   credentials_counter--;
-  if (credentials_counter != 0)
-    return;
-
   deinit_gnutls();
 }