diff options
| author | miod <> | 2015-07-20 15:29:13 +0000 |
|---|---|---|
| committer | miod <> | 2015-07-20 15:29:13 +0000 |
| commit | 7aedfe9a6d378d4f56e1f6394613873869aebf02 (patch) | |
| tree | 96982846dac00a43ab0cced11dcf4ae26e3a8c41 /src/lib/libc | |
| parent | d48dfd069bd3d4c7fb0d3e9d3a8bc9822c739db7 (diff) | |
| download | openbsd-7aedfe9a6d378d4f56e1f6394613873869aebf02.tar.gz openbsd-7aedfe9a6d378d4f56e1f6394613873869aebf02.tar.bz2 openbsd-7aedfe9a6d378d4f56e1f6394613873869aebf02.zip | |
When freeing an X509_CRL, if freeing the user-maintained meth_data fails,
do not forgot to nevertheless keep freeing the other fields.
ok doug@ guenther@
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/asn1/x_crl.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/libcrypto/asn1/x_crl.c b/src/lib/libcrypto/asn1/x_crl.c index 7b76d2ec47..6062587ed4 100644 --- a/src/lib/libcrypto/asn1/x_crl.c +++ b/src/lib/libcrypto/asn1/x_crl.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_crl.c,v 1.24 2015/02/11 04:00:39 jsing Exp $ */ | 1 | /* $OpenBSD: x_crl.c,v 1.25 2015/07/20 15:29:13 miod Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -270,6 +270,7 @@ crl_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
| 270 | STACK_OF(X509_EXTENSION) *exts; | 270 | STACK_OF(X509_EXTENSION) *exts; |
| 271 | X509_EXTENSION *ext; | 271 | X509_EXTENSION *ext; |
| 272 | int idx; | 272 | int idx; |
| 273 | int rc = 1; | ||
| 273 | 274 | ||
| 274 | switch (operation) { | 275 | switch (operation) { |
| 275 | case ASN1_OP_NEW_POST: | 276 | case ASN1_OP_NEW_POST: |
| @@ -345,7 +346,7 @@ crl_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
| 345 | case ASN1_OP_FREE_POST: | 346 | case ASN1_OP_FREE_POST: |
| 346 | if (crl->meth->crl_free) { | 347 | if (crl->meth->crl_free) { |
| 347 | if (!crl->meth->crl_free(crl)) | 348 | if (!crl->meth->crl_free(crl)) |
| 348 | return 0; | 349 | rc = 0; |
| 349 | } | 350 | } |
| 350 | if (crl->akid) | 351 | if (crl->akid) |
| 351 | AUTHORITY_KEYID_free(crl->akid); | 352 | AUTHORITY_KEYID_free(crl->akid); |
| @@ -356,7 +357,7 @@ crl_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
| 356 | sk_GENERAL_NAMES_pop_free(crl->issuers, GENERAL_NAMES_free); | 357 | sk_GENERAL_NAMES_pop_free(crl->issuers, GENERAL_NAMES_free); |
| 357 | break; | 358 | break; |
| 358 | } | 359 | } |
| 359 | return 1; | 360 | return rc; |
| 360 | } | 361 | } |
| 361 | 362 | ||
| 362 | /* Convert IDP into a more convenient form */ | 363 | /* Convert IDP into a more convenient form */ |
