summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authormiod <>2014-10-05 18:26:22 +0000
committermiod <>2014-10-05 18:26:22 +0000
commit09bcc7856a09ba5b54ed82a68820b171edafeda9 (patch)
treee293aded430238d24dc205669ffd55c01473c5c4 /src/lib
parent9207ab67b18f63516d68a92495a6bc3da5a98806 (diff)
downloadopenbsd-09bcc7856a09ba5b54ed82a68820b171edafeda9.tar.gz
openbsd-09bcc7856a09ba5b54ed82a68820b171edafeda9.tar.bz2
openbsd-09bcc7856a09ba5b54ed82a68820b171edafeda9.zip
Fix memory leak in the error path of v2i_AUTHORITY_KEYID().
ok deraadt@ guenther@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/x509v3/v3_akey.c9
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_akey.c9
2 files changed, 12 insertions, 6 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_akey.c b/src/lib/libcrypto/x509v3/v3_akey.c
index b0beb55fee..d5b5f685af 100644
--- a/src/lib/libcrypto/x509v3/v3_akey.c
+++ b/src/lib/libcrypto/x509v3/v3_akey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_akey.c,v 1.12 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: v3_akey.c,v 1.13 2014/10/05 18:26:22 miod Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 1999. 3 * project 1999.
4 */ 4 */
@@ -120,12 +120,12 @@ v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
120 CONF_VALUE *cnf; 120 CONF_VALUE *cnf;
121 ASN1_OCTET_STRING *ikeyid = NULL; 121 ASN1_OCTET_STRING *ikeyid = NULL;
122 X509_NAME *isname = NULL; 122 X509_NAME *isname = NULL;
123 GENERAL_NAMES * gens = NULL; 123 STACK_OF(GENERAL_NAME) *gens = NULL;
124 GENERAL_NAME *gen = NULL; 124 GENERAL_NAME *gen = NULL;
125 ASN1_INTEGER *serial = NULL; 125 ASN1_INTEGER *serial = NULL;
126 X509_EXTENSION *ext; 126 X509_EXTENSION *ext;
127 X509 *cert; 127 X509 *cert;
128 AUTHORITY_KEYID *akeyid; 128 AUTHORITY_KEYID *akeyid = NULL;
129 129
130 for (i = 0; i < sk_CONF_VALUE_num(values); i++) { 130 for (i = 0; i < sk_CONF_VALUE_num(values); i++) {
131 cnf = sk_CONF_VALUE_value(values, i); 131 cnf = sk_CONF_VALUE_value(values, i);
@@ -199,6 +199,9 @@ v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
199 return akeyid; 199 return akeyid;
200 200
201err: 201err:
202 AUTHORITY_KEYID_free(akeyid);
203 GENERAL_NAME_free(gen);
204 sk_GENERAL_NAME_free(gens);
202 X509_NAME_free(isname); 205 X509_NAME_free(isname);
203 M_ASN1_INTEGER_free(serial); 206 M_ASN1_INTEGER_free(serial);
204 M_ASN1_OCTET_STRING_free(ikeyid); 207 M_ASN1_OCTET_STRING_free(ikeyid);
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_akey.c b/src/lib/libssl/src/crypto/x509v3/v3_akey.c
index b0beb55fee..d5b5f685af 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_akey.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_akey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_akey.c,v 1.12 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: v3_akey.c,v 1.13 2014/10/05 18:26:22 miod Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 1999. 3 * project 1999.
4 */ 4 */
@@ -120,12 +120,12 @@ v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
120 CONF_VALUE *cnf; 120 CONF_VALUE *cnf;
121 ASN1_OCTET_STRING *ikeyid = NULL; 121 ASN1_OCTET_STRING *ikeyid = NULL;
122 X509_NAME *isname = NULL; 122 X509_NAME *isname = NULL;
123 GENERAL_NAMES * gens = NULL; 123 STACK_OF(GENERAL_NAME) *gens = NULL;
124 GENERAL_NAME *gen = NULL; 124 GENERAL_NAME *gen = NULL;
125 ASN1_INTEGER *serial = NULL; 125 ASN1_INTEGER *serial = NULL;
126 X509_EXTENSION *ext; 126 X509_EXTENSION *ext;
127 X509 *cert; 127 X509 *cert;
128 AUTHORITY_KEYID *akeyid; 128 AUTHORITY_KEYID *akeyid = NULL;
129 129
130 for (i = 0; i < sk_CONF_VALUE_num(values); i++) { 130 for (i = 0; i < sk_CONF_VALUE_num(values); i++) {
131 cnf = sk_CONF_VALUE_value(values, i); 131 cnf = sk_CONF_VALUE_value(values, i);
@@ -199,6 +199,9 @@ v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
199 return akeyid; 199 return akeyid;
200 200
201err: 201err:
202 AUTHORITY_KEYID_free(akeyid);
203 GENERAL_NAME_free(gen);
204 sk_GENERAL_NAME_free(gens);
202 X509_NAME_free(isname); 205 X509_NAME_free(isname);
203 M_ASN1_INTEGER_free(serial); 206 M_ASN1_INTEGER_free(serial);
204 M_ASN1_OCTET_STRING_free(ikeyid); 207 M_ASN1_OCTET_STRING_free(ikeyid);