From 4a064e2a06fe737f344d1dfd8a45cc4c2abbe4c9 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Wed, 23 Mar 2016 18:21:53 +0100 Subject: cipher: Fix memleaks in (self)tests. * 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 Minor formatting changes by -wk. --- cipher/dsa.c | 7 +++++++ cipher/ecc.c | 1 + tests/keygen.c | 3 +++ 3 files changed, 11 insertions(+) diff --git a/cipher/dsa.c b/cipher/dsa.c index 909a8ca2..22d8d782 100644 --- a/cipher/dsa.c +++ b/cipher/dsa.c @@ -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); diff --git a/cipher/ecc.c b/cipher/ecc.c index 5b035306..8dbf5bd0 100644 --- a/cipher/ecc.c +++ b/cipher/ecc.c @@ -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; diff --git a/tests/keygen.c b/tests/keygen.c index ebb708b8..c4520e92 100644 --- a/tests/keygen.c +++ b/tests/keygen.c @@ -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"); -- cgit v1.2.1