diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/asn1/bio_ndef.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/lib/libcrypto/asn1/bio_ndef.c b/src/lib/libcrypto/asn1/bio_ndef.c index 6266d68bbd..7ef08764aa 100644 --- a/src/lib/libcrypto/asn1/bio_ndef.c +++ b/src/lib/libcrypto/asn1/bio_ndef.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: bio_ndef.c,v 1.12 2023/03/06 19:10:14 tb Exp $ */ | 1 | /* $OpenBSD: bio_ndef.c,v 1.13 2023/03/11 15:50:13 tb 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. | 3 | * project. |
| 4 | */ | 4 | */ |
| @@ -101,7 +101,7 @@ BIO * | |||
| 101 | BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it) | 101 | BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it) |
| 102 | { | 102 | { |
| 103 | NDEF_SUPPORT *ndef_aux = NULL; | 103 | NDEF_SUPPORT *ndef_aux = NULL; |
| 104 | BIO *asn_bio = NULL; | 104 | BIO *asn_bio = NULL, *pop_bio = NULL; |
| 105 | const ASN1_AUX *aux = it->funcs; | 105 | const ASN1_AUX *aux = it->funcs; |
| 106 | ASN1_STREAM_ARG sarg; | 106 | ASN1_STREAM_ARG sarg; |
| 107 | 107 | ||
| @@ -112,12 +112,12 @@ BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it) | |||
| 112 | ndef_aux = malloc(sizeof(NDEF_SUPPORT)); | 112 | ndef_aux = malloc(sizeof(NDEF_SUPPORT)); |
| 113 | asn_bio = BIO_new(BIO_f_asn1()); | 113 | asn_bio = BIO_new(BIO_f_asn1()); |
| 114 | 114 | ||
| 115 | /* ASN1 bio needs to be next to output BIO */ | 115 | if (!ndef_aux || !asn_bio) |
| 116 | 116 | goto err; | |
| 117 | out = BIO_push(asn_bio, out); | ||
| 118 | 117 | ||
| 119 | if (!ndef_aux || !asn_bio || !out) | 118 | if ((out = BIO_push(asn_bio, out)) == NULL) |
| 120 | goto err; | 119 | goto err; |
| 120 | pop_bio = asn_bio; | ||
| 121 | 121 | ||
| 122 | BIO_asn1_set_prefix(asn_bio, ndef_prefix, ndef_prefix_free); | 122 | BIO_asn1_set_prefix(asn_bio, ndef_prefix, ndef_prefix_free); |
| 123 | BIO_asn1_set_suffix(asn_bio, ndef_suffix, ndef_suffix_free); | 123 | BIO_asn1_set_suffix(asn_bio, ndef_suffix, ndef_suffix_free); |
| @@ -144,6 +144,7 @@ BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it) | |||
| 144 | return sarg.ndef_bio; | 144 | return sarg.ndef_bio; |
| 145 | 145 | ||
| 146 | err: | 146 | err: |
| 147 | BIO_pop(pop_bio); | ||
| 147 | BIO_free(asn_bio); | 148 | BIO_free(asn_bio); |
| 148 | free(ndef_aux); | 149 | free(ndef_aux); |
| 149 | return NULL; | 150 | return NULL; |
