gnutls-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU gnutls branch, gnutls_2_12_x, updated. gnutls_2_12_1-38-g029c4


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU gnutls branch, gnutls_2_12_x, updated. gnutls_2_12_1-38-g029c426
Date: Fri, 08 Apr 2011 13:45:17 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gnutls".

http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=029c4260bd3e0bd444ac0ca473386f7ef57470ec

The branch, gnutls_2_12_x has been updated
       via  029c4260bd3e0bd444ac0ca473386f7ef57470ec (commit)
       via  1e4e52ea7fdeea7d21c1c4c79683a474ba54a912 (commit)
      from  ccc92fb42034c783afa236c5eee99bc5204a0b8d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 029c4260bd3e0bd444ac0ca473386f7ef57470ec
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Fri Apr 8 15:38:42 2011 +0200

    Corrected memory leaks.

commit 1e4e52ea7fdeea7d21c1c4c79683a474ba54a912
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Fri Apr 8 14:32:36 2011 +0200

    Do not run the test scripts in win32 environment.

-----------------------------------------------------------------------

Summary of changes:
 NEWS                          |    2 +-
 lib/auth_dh_common.c          |    3 +-
 lib/gnutls_privkey.c          |    6 ++--
 lib/gnutls_x509.c             |    1 -
 lib/nettle/pk.c               |   45 ++++++++++++++++++++++++++++------------
 lib/pakchois/pakchois.c       |   14 ++++--------
 lib/pakchois/pakchois.h       |    2 +
 lib/pkcs11.c                  |    1 +
 tests/dsa/testdsa             |    4 +++
 tests/mini-x509.c             |    1 +
 tests/openpgp-certs/testcerts |    4 +++
 11 files changed, 53 insertions(+), 30 deletions(-)

diff --git a/NEWS b/NEWS
index 23c6a01..13db59b 100644
--- a/NEWS
+++ b/NEWS
@@ -7,7 +7,7 @@ See the end for copying conditions.
 
 ** libgnutls: Several updates and fixes for win32. Patches by LRN.
 
-** libgnutls: Several bug fixes.
+** libgnutls: Several bug and memory leak fixes.
 
 ** srptool: Accepts the -d option to enable debugging.
 
diff --git a/lib/auth_dh_common.c b/lib/auth_dh_common.c
index 5df743e..ea9062c 100644
--- a/lib/auth_dh_common.c
+++ b/lib/auth_dh_common.c
@@ -162,7 +162,6 @@ _gnutls_gen_dh_common_client_kx_int (gnutls_session_t 
session, opaque ** data, g
   session->key->KEY =
     gnutls_calc_dh_key (session->key->client_Y, x, session->key->client_p);
 
-  _gnutls_mpi_release (&x);
   if (session->key->KEY == NULL)
     {
       gnutls_assert ();
@@ -204,7 +203,7 @@ _gnutls_gen_dh_common_client_kx_int (gnutls_session_t 
session, opaque ** data, g
       goto error;
     }
 
-  return n_X + 2;
+  ret = n_X + 2;
 
 error:
   _gnutls_mpi_release (&x);
diff --git a/lib/gnutls_privkey.c b/lib/gnutls_privkey.c
index 9ecba26..9597572 100644
--- a/lib/gnutls_privkey.c
+++ b/lib/gnutls_privkey.c
@@ -272,12 +272,12 @@ gnutls_privkey_deinit (gnutls_privkey_t key)
       {
 #ifdef ENABLE_OPENPGP
       case GNUTLS_PRIVKEY_OPENPGP:
-        return gnutls_openpgp_privkey_deinit (key->key.openpgp);
+        gnutls_openpgp_privkey_deinit (key->key.openpgp);
 #endif
       case GNUTLS_PRIVKEY_PKCS11:
-        return gnutls_pkcs11_privkey_deinit (key->key.pkcs11);
+        gnutls_pkcs11_privkey_deinit (key->key.pkcs11);
       case GNUTLS_PRIVKEY_X509:
-        return gnutls_x509_privkey_deinit (key->key.x509);
+        gnutls_x509_privkey_deinit (key->key.x509);
       }
   gnutls_free (key);
 }
diff --git a/lib/gnutls_x509.c b/lib/gnutls_x509.c
index 36f304a..ee5872f 100644
--- a/lib/gnutls_x509.c
+++ b/lib/gnutls_x509.c
@@ -850,7 +850,6 @@ certificate_credentials_append_pkey 
(gnutls_certificate_credentials_t res,
       gnutls_assert ();
       return GNUTLS_E_MEMORY_ERROR;
     }
-
   res->pkey[res->ncerts] = pkey;
   return 0;
 
diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c
index 5a57b14..9af3739 100644
--- a/lib/nettle/pk.c
+++ b/lib/nettle/pk.c
@@ -225,7 +225,7 @@ _wrap_nettle_pk_decrypt (gnutls_pk_algorithm_t algo,
             return GNUTLS_E_MEMORY_ERROR;
           }
 
-        rsa_private_key_init (&priv);
+        memset(&priv, 0, sizeof(priv));
         _rsa_params_to_privkey (pk_params, &priv);
 
         rsa_compute_root (&priv, TOMPZ (nc), TOMPZ (nc));
@@ -278,8 +278,8 @@ _wrap_nettle_pk_sign (gnutls_pk_algorithm_t algo,
         struct dsa_signature sig;
         int hash_len;
 
-        dsa_public_key_init (&pub);
-        dsa_private_key_init (&priv);
+        memset(&priv, 0, sizeof(priv));
+        memset(&pub, 0, sizeof(pub));
         _dsa_params_to_pubkey (pk_params, &pub);
         _dsa_params_to_privkey (pk_params, &priv);
 
@@ -327,7 +327,7 @@ _wrap_nettle_pk_sign (gnutls_pk_algorithm_t algo,
             return GNUTLS_E_MPI_SCAN_FAILED;
           }
 
-        rsa_private_key_init (&priv);
+        memset(&priv, 0, sizeof(priv));
         _rsa_params_to_privkey (pk_params, &priv);
 
         nc = rsa_blind (hash, pk_params->params[1] /*e */ ,
@@ -338,7 +338,8 @@ _wrap_nettle_pk_sign (gnutls_pk_algorithm_t algo,
         if (nc == NULL)
           {
             gnutls_assert ();
-            return GNUTLS_E_MEMORY_ERROR;
+            ret = GNUTLS_E_MEMORY_ERROR;
+            goto rsa_fail;
           }
 
         rsa_compute_root (&priv, TOMPZ (nc), TOMPZ (nc));
@@ -346,6 +347,8 @@ _wrap_nettle_pk_sign (gnutls_pk_algorithm_t algo,
         rsa_unblind (nc, ri, pk_params->params[0] /*m */ );
 
         ret = _gnutls_mpi_dprint (nc, signature);
+
+rsa_fail:
         _gnutls_mpi_release (&nc);
         _gnutls_mpi_release (&ri);
 
@@ -421,7 +424,7 @@ _wrap_nettle_pk_verify (gnutls_pk_algorithm_t algo,
             gnutls_assert ();
             goto cleanup;
           }
-        dsa_public_key_init (&pub);
+        memset(&pub, 0, sizeof(pub));
         _dsa_params_to_pubkey (pk_params, &pub);
         memcpy (&sig.r, tmp[0], sizeof (sig.r));
         memcpy (&sig.s, tmp[1], sizeof (sig.s));
@@ -490,6 +493,8 @@ wrap_nettle_pk_generate_params (gnutls_pk_algorithm_t algo,
   int ret, i;
   int q_bits;
 
+  memset(params, 0, sizeof(*params));
+
   switch (algo)
     {
 
@@ -514,7 +519,8 @@ wrap_nettle_pk_generate_params (gnutls_pk_algorithm_t algo,
         if (ret != 1)
           {
             gnutls_assert ();
-            return GNUTLS_E_INTERNAL_ERROR;
+            ret = GNUTLS_E_INTERNAL_ERROR;
+            goto dsa_fail;
           }
 
         params->params_nr = 0;
@@ -524,21 +530,25 @@ wrap_nettle_pk_generate_params (gnutls_pk_algorithm_t 
algo,
             if (params->params[i] == NULL)
               {
                 ret = GNUTLS_E_MEMORY_ERROR;
-                dsa_private_key_clear (&priv);
-                dsa_public_key_clear (&pub);
-                goto fail;
+                goto dsa_fail;
               }
             params->params_nr++;
           }
+
+        ret = 0;
         _gnutls_mpi_set (params->params[0], pub.p);
         _gnutls_mpi_set (params->params[1], pub.q);
         _gnutls_mpi_set (params->params[2], pub.g);
         _gnutls_mpi_set (params->params[3], pub.y);
         _gnutls_mpi_set (params->params[4], priv.x);
 
+dsa_fail:
         dsa_private_key_clear (&priv);
         dsa_public_key_clear (&pub);
 
+        if (ret < 0)
+          goto fail;
+
         break;
       }
     case GNUTLS_PK_RSA:
@@ -557,7 +567,8 @@ wrap_nettle_pk_generate_params (gnutls_pk_algorithm_t algo,
         if (ret != 1)
           {
             gnutls_assert ();
-            return GNUTLS_E_INTERNAL_ERROR;
+            ret = GNUTLS_E_INTERNAL_ERROR;
+            goto rsa_fail;
           }
 
         params->params_nr = 0;
@@ -567,13 +578,14 @@ wrap_nettle_pk_generate_params (gnutls_pk_algorithm_t 
algo,
             if (params->params[i] == NULL)
               {
                 ret = GNUTLS_E_MEMORY_ERROR;
-                rsa_private_key_clear (&priv);
-                rsa_public_key_clear (&pub);
-                goto fail;
+                goto rsa_fail;
               }
             params->params_nr++;
 
           }
+          
+        ret = 0;
+
         _gnutls_mpi_set (params->params[0], pub.n);
         _gnutls_mpi_set (params->params[1], pub.e);
         _gnutls_mpi_set (params->params[2], priv.d);
@@ -582,9 +594,14 @@ wrap_nettle_pk_generate_params (gnutls_pk_algorithm_t algo,
         _gnutls_mpi_set (params->params[5], priv.c);
         _gnutls_mpi_set (params->params[6], priv.a);
         _gnutls_mpi_set (params->params[7], priv.b);
+
+rsa_fail:
         rsa_private_key_clear (&priv);
         rsa_public_key_clear (&pub);
 
+        if (ret < 0)
+          goto fail;
+
         break;
       }
     default:
diff --git a/lib/pakchois/pakchois.c b/lib/pakchois/pakchois.c
index e2ffe0f..decd752 100644
--- a/lib/pakchois/pakchois.c
+++ b/lib/pakchois/pakchois.c
@@ -581,18 +581,14 @@ pakchois_module_destroy (pakchois_module_t * mod)
   free (mod);
 }
 
-#ifdef __GNUC__
-static void pakchois_destructor (void) __attribute__ ((destructor));
-
-static void
-pakchois_destructor (void)
+void pakchois_destructor (void)
 {
   if (provider_mutex != NULL)
-    gnutls_mutex_deinit (&provider_mutex);
+    {
+      gnutls_mutex_deinit (&provider_mutex);
+      provider_mutex = NULL;
+    }
 }
-#else
-#warning need destructor support
-#endif
 
 ck_rv_t
 pakchois_get_info (pakchois_module_t * mod, struct ck_info *info)
diff --git a/lib/pakchois/pakchois.h b/lib/pakchois/pakchois.h
index a7f8069..16558ef 100644
--- a/lib/pakchois/pakchois.h
+++ b/lib/pakchois/pakchois.h
@@ -96,6 +96,8 @@ ck_rv_t pakchois_module_nssload_abs (pakchois_module_t ** 
module,
 /* Destroy a PKCS#11 module. */
 void pakchois_module_destroy (pakchois_module_t * module);
 
+void pakchois_destructor (void);
+
 /* Return the error string corresponding to the given return value.
  * Never returns NULL.  */
 const char *pakchois_error (ck_rv_t rv);
diff --git a/lib/pkcs11.c b/lib/pkcs11.c
index 2285ce8..81c043b 100644
--- a/lib/pkcs11.c
+++ b/lib/pkcs11.c
@@ -456,6 +456,7 @@ gnutls_pkcs11_deinit (void)
       pakchois_module_destroy (providers[i].module);
     }
   active_providers = 0;
+  pakchois_destructor();
 }
 
 /**
diff --git a/tests/dsa/testdsa b/tests/dsa/testdsa
index 910bf8b..de1b41b 100755
--- a/tests/dsa/testdsa
+++ b/tests/dsa/testdsa
@@ -27,6 +27,10 @@ PORT="${PORT:-5559}"
 DEBUG=""
 unset RETCODE
 
+if test "${WINDIR}" != "";then
+  exit 77
+fi 
+
 fail() {
    echo "Failure: $1" >&2
    exit 1
diff --git a/tests/mini-x509.c b/tests/mini-x509.c
index 8b57ca8..9a1b4e8 100644
--- a/tests/mini-x509.c
+++ b/tests/mini-x509.c
@@ -236,6 +236,7 @@ main (int argc, char *argv[])
   free (to_client);
 
   gnutls_certificate_free_credentials (serverx509cred);
+  gnutls_certificate_free_credentials (clientx509cred);
 
   gnutls_global_deinit ();
 
diff --git a/tests/openpgp-certs/testcerts b/tests/openpgp-certs/testcerts
index b100ac8..737aa7e 100755
--- a/tests/openpgp-certs/testcerts
+++ b/tests/openpgp-certs/testcerts
@@ -27,6 +27,10 @@ PORT="${PORT:-5557}"
 DEBUG=""
 unset RETCODE
 
+if test "${WINDIR}" != "";then
+  exit 77
+fi 
+
 fail() {
    echo "Failure: $1" >&2
    RETCODE=${RETCODE:-${2:-1}}


hooks/post-receive
-- 
GNU gnutls



reply via email to

[Prev in Thread] Current Thread [Next in Thread]