diff options
author | miod <> | 2014-10-05 18:26:22 +0000 |
---|---|---|
committer | miod <> | 2014-10-05 18:26:22 +0000 |
commit | 09bcc7856a09ba5b54ed82a68820b171edafeda9 (patch) | |
tree | e293aded430238d24dc205669ffd55c01473c5c4 /src | |
parent | 9207ab67b18f63516d68a92495a6bc3da5a98806 (diff) | |
download | openbsd-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')
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_akey.c | 9 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3_akey.c | 9 |
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 | ||
201 | err: | 201 | err: |
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 | ||
201 | err: | 201 | err: |
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); |