cipher: Fix memleaks in (self)tests.
authorPeter Wu <peter@lekensteyn.nl>
Wed, 23 Mar 2016 17:21:53 +0000 (18:21 +0100)
committerWerner Koch <wk@gnupg.org>
Thu, 24 Mar 2016 16:02:34 +0000 (17:02 +0100)
* cipher/dsa.c: Release memory for MPI and sexp structures.
* cipher/ecc.c: Release memory for sexp structure.
* tests/keygen.c: Likewise.
--

These leaks broke the mpitests, basic and keygen tests when running
under AddressSanitizer.

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Minor formatting changes by -wk.

cipher/dsa.c
cipher/ecc.c
tests/keygen.c

index 909a8ca..22d8d78 100644 (file)
@@ -1255,6 +1255,7 @@ selftest_sign (gcry_sexp_t pkey, gcry_sexp_t skey)
   if (!calculated_r)
     goto leave;
 
+  sexp_release (l2);
   l2 = _gcry_sexp_find_token (l1, "s", 0);
   if (!l2)
     goto leave;
@@ -1289,6 +1290,12 @@ selftest_sign (gcry_sexp_t pkey, gcry_sexp_t skey)
 
 
  leave:
+  _gcry_mpi_release (calculated_s);
+  _gcry_mpi_release (calculated_r);
+  _gcry_mpi_release (s);
+  _gcry_mpi_release (r);
+  sexp_release (l2);
+  sexp_release (l1);
   sexp_release (sig);
   sexp_release (data_bad);
   sexp_release (data);
index 5b03530..8dbf5bd 100644 (file)
@@ -2046,6 +2046,7 @@ selftest_sign (gcry_sexp_t pkey, gcry_sexp_t skey)
   if (!calculated_r)
     goto leave;
 
+  sexp_release (l2);
   l2 = _gcry_sexp_find_token (l1, "s", 0);
   if (!l2)
     goto leave;
index ebb708b..c4520e9 100644 (file)
@@ -219,6 +219,8 @@ check_rsa_keys (void)
                       " ))", 0, 1);
   if (rc)
     die ("error creating S-expression: %s\n", gpg_strerror (rc));
+
+  gcry_sexp_release (key);
   rc = gcry_pk_genkey (&key, keyparm);
   gcry_sexp_release (keyparm);
   if (rc && !in_fips_mode)
@@ -560,6 +562,7 @@ check_ecc_keys (void)
   if (verbose && rc && in_fips_mode)
     show ("... correctly rejected key creation in FIPS mode (%s)\n",
           gpg_strerror (rc));
+  gcry_sexp_release (key);
 
   if (verbose)
     show ("creating ECC key using curve NIST P-384 for ECDSA\n");