summaryrefslogtreecommitdiff
path: root/tests/openpgp-callback.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2015-01-11 16:25:01 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2015-01-11 16:25:01 +0100
commitf302bded3dadee377d09580854359c232fe954f5 (patch)
treeb22d79c5bbf9282e49b645ea3d362896d9986015 /tests/openpgp-callback.c
parent53f06e4fd9853d5981afd005eed9130606982549 (diff)
downloadgnutls-f302bded3dadee377d09580854359c232fe954f5.tar.gz
tests: eliminated leaks
Diffstat (limited to 'tests/openpgp-callback.c')
-rw-r--r--tests/openpgp-callback.c41
1 files changed, 28 insertions, 13 deletions
diff --git a/tests/openpgp-callback.c b/tests/openpgp-callback.c
index 179fef53ae..c80bdaca91 100644
--- a/tests/openpgp-callback.c
+++ b/tests/openpgp-callback.c
@@ -308,6 +308,9 @@ static unsigned char server_key_txt[] =
const gnutls_datum_t server_key =
{ server_key_txt, sizeof(server_key_txt) };
+static gnutls_privkey_t g_pkey = NULL;
+static gnutls_pcert_st *g_pcert = NULL;
+
static int
cert_callback(gnutls_session_t session,
const gnutls_datum_t * req_ca_rdn, int nreqs,
@@ -323,22 +326,31 @@ cert_callback(gnutls_session_t session,
if (p==NULL)
return -1;
- ret = gnutls_pcert_import_openpgp_raw(p, &server_crt, GNUTLS_OPENPGP_FMT_BASE64, NULL, 0);
- if (ret < 0)
- return -1;
+ if (g_pkey == NULL) {
+ ret = gnutls_pcert_import_openpgp_raw(p, &server_crt, GNUTLS_OPENPGP_FMT_BASE64, NULL, 0);
+ if (ret < 0)
+ return -1;
- ret = gnutls_privkey_init(&lkey);
- if (ret < 0)
- return -1;
+ ret = gnutls_privkey_init(&lkey);
+ if (ret < 0)
+ return -1;
- ret = gnutls_privkey_import_openpgp_raw(lkey, &server_key, GNUTLS_OPENPGP_FMT_BASE64, NULL, NULL);
- if (ret < 0)
- return -1;
+ ret = gnutls_privkey_import_openpgp_raw(lkey, &server_key, GNUTLS_OPENPGP_FMT_BASE64, NULL, NULL);
+ if (ret < 0)
+ return -1;
+
+ g_pcert = p;
+ g_pkey = lkey;
+
+ *pcert = p;
+ *pcert_length = 1;
+ *pkey = lkey;
+ } else {
+ *pcert = g_pcert;
+ *pcert_length = 1;
+ *pkey = g_pkey;
+ }
- *pcert = p;
- *pcert_length = 1;
- *pkey = lkey;
-
return 0;
}
@@ -415,7 +427,10 @@ const gnutls_datum_t p3 = { (void *) pkcs3, strlen(pkcs3) };
gnutls_deinit(session);
gnutls_certificate_free_credentials(pgp_cred);
+ gnutls_pcert_deinit(&g_pcert[0]);
+ gnutls_privkey_deinit(g_pkey);
+ gnutls_dh_params_deinit(dh_params);
gnutls_global_deinit();
if (debug)