]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Deinitialize the correct number of certificates. Reported by Remi Gacogne.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 19 Feb 2012 19:33:56 +0000 (20:33 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 19 Feb 2012 19:33:56 +0000 (20:33 +0100)
lib/auth/cert.c
lib/gnutls_pcert.c

index b2bfca896dd852bb1b67eeb1ca9ee48254762157..7582c759ae720454fea32804cd18dbf8e7633d50 100644 (file)
@@ -1172,6 +1172,7 @@ _gnutls_proc_x509_server_certificate (gnutls_session_t session,
       if (ret < 0)
         {
           gnutls_assert ();
+          peer_certificate_list_size = j;
           goto cleanup;
         }
 
index 17e9c4f764dd57518484a8570d66735899809e31..1211e2d6fb9f23dced3458605e1c8e8ec13e9014 100644 (file)
@@ -89,6 +89,7 @@ size_t sz;
   if (ret < 0)
     {
       gnutls_pubkey_deinit(pcert->pubkey);
+      pcert->pubkey = NULL;
       ret = gnutls_assert_val(ret);
       goto cleanup;
     }
@@ -96,7 +97,7 @@ size_t sz;
   return 0;
 
 cleanup:
-  gnutls_free(pcert->cert.data);
+  _gnutls_free_datum(&pcert->cert);
 
   return ret;
 }
@@ -281,6 +282,7 @@ size_t sz;
   if (ret < 0)
     {
       gnutls_pubkey_deinit(pcert->pubkey);
+      pcert->pubkey = NULL;
       ret = gnutls_assert_val(ret);
       goto cleanup;
     }
@@ -288,7 +290,7 @@ size_t sz;
   return 0;
 
 cleanup:
-  gnutls_free(pcert->cert.data);
+  _gnutls_free_datum(&pcert->cert);
 
   return ret;
 }
@@ -373,8 +375,7 @@ gnutls_pcert_deinit (gnutls_pcert_st *pcert)
 {
   gnutls_pubkey_deinit(pcert->pubkey);
   pcert->pubkey = NULL;
-  gnutls_free(pcert->cert.data);
-  pcert->cert.data = NULL;
+  _gnutls_free_datum(&pcert->cert);
 }
 
 /* Converts the first certificate for the cert_auth_info structure