From: Nikos Mavrogiannopoulos Date: Sat, 27 Aug 2011 18:41:31 +0000 (+0200) Subject: more updates in private key copy. X-Git-Tag: gnutls_3_0_2~23 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f9e11d4543219c4b1698a0eca5fa1d68ee44232e;p=thirdparty%2Fgnutls.git more updates in private key copy. --- diff --git a/lib/openpgp/gnutls_openpgp.c b/lib/openpgp/gnutls_openpgp.c index dd2eaaca4c..5bb97fadc5 100644 --- a/lib/openpgp/gnutls_openpgp.c +++ b/lib/openpgp/gnutls_openpgp.c @@ -403,6 +403,7 @@ gnutls_certificate_set_openpgp_key_mem2 (gnutls_certificate_credentials_t res, ret = gnutls_certificate_set_openpgp_key (res, crt, pkey); gnutls_openpgp_crt_deinit (crt); + gnutls_openpgp_privkey_deinit (pkey); return ret; } diff --git a/lib/openpgp/privkey.c b/lib/openpgp/privkey.c index 8f43dff6fc..0ee05325b4 100644 --- a/lib/openpgp/privkey.c +++ b/lib/openpgp/privkey.c @@ -86,25 +86,19 @@ int _gnutls_openpgp_privkey_cpy (gnutls_openpgp_privkey_t dest, gnutls_openpgp_privkey_t src) { int ret; - size_t der_size; + size_t raw_size=0; opaque *der; gnutls_datum_t tmp; - ret = gnutls_openpgp_privkey_export (src, GNUTLS_OPENPGP_FMT_RAW, NULL, 0, NULL, &der_size); + ret = gnutls_openpgp_privkey_export (src, GNUTLS_OPENPGP_FMT_RAW, NULL, 0, NULL, &raw_size); if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER) - { - gnutls_assert (); - return ret; - } + return gnutls_assert_val(ret); - der = gnutls_malloc (der_size); + der = gnutls_malloc (raw_size); if (der == NULL) - { - gnutls_assert (); - return GNUTLS_E_MEMORY_ERROR; - } + return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - ret = gnutls_openpgp_privkey_export (src, GNUTLS_OPENPGP_FMT_RAW, NULL, 0, der, &der_size); + ret = gnutls_openpgp_privkey_export (src, GNUTLS_OPENPGP_FMT_RAW, NULL, 0, der, &raw_size); if (ret < 0) { gnutls_assert (); @@ -113,16 +107,16 @@ _gnutls_openpgp_privkey_cpy (gnutls_openpgp_privkey_t dest, gnutls_openpgp_privk } tmp.data = der; - tmp.size = der_size; + tmp.size = raw_size; ret = gnutls_openpgp_privkey_import (dest, &tmp, GNUTLS_OPENPGP_FMT_RAW, NULL, 0); gnutls_free (der); if (ret < 0) - { - gnutls_assert (); - return ret; - } + return gnutls_assert_val(ret); + + memcpy(dest->preferred_keyid, src->preferred_keyid, GNUTLS_OPENPGP_KEYID_SIZE); + dest->preferred_set = src->preferred_set; return 0; } diff --git a/lib/x509/x509.c b/lib/x509/x509.c index 8198c1aee6..a8f6270ec9 100644 --- a/lib/x509/x509.c +++ b/lib/x509/x509.c @@ -83,7 +83,7 @@ int _gnutls_x509_crt_cpy (gnutls_x509_crt_t dest, gnutls_x509_crt_t src) { int ret; - size_t der_size; + size_t der_size=0; opaque *der; gnutls_datum_t tmp;