diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/asn1/bio_asn1.c | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/src/lib/libcrypto/asn1/bio_asn1.c b/src/lib/libcrypto/asn1/bio_asn1.c index 93bcb33888..9a14d2bb84 100644 --- a/src/lib/libcrypto/asn1/bio_asn1.c +++ b/src/lib/libcrypto/asn1/bio_asn1.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: bio_asn1.c,v 1.13 2018/05/01 13:29:09 tb Exp $ */ | 1 | /* $OpenBSD: bio_asn1.c,v 1.14 2021/11/27 13:10:33 schwarze 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 | */ |
| @@ -118,7 +118,6 @@ static int asn1_bio_new(BIO *h); | |||
| 118 | static int asn1_bio_free(BIO *data); | 118 | static int asn1_bio_free(BIO *data); |
| 119 | static long asn1_bio_callback_ctrl(BIO *h, int cmd, bio_info_cb *fp); | 119 | static long asn1_bio_callback_ctrl(BIO *h, int cmd, bio_info_cb *fp); |
| 120 | 120 | ||
| 121 | static int asn1_bio_init(BIO_ASN1_BUF_CTX *ctx, int size); | ||
| 122 | static int asn1_bio_flush_ex(BIO *b, BIO_ASN1_BUF_CTX *ctx, | 121 | static int asn1_bio_flush_ex(BIO *b, BIO_ASN1_BUF_CTX *ctx, |
| 123 | asn1_ps_func *cleanup, asn1_bio_state_t next); | 122 | asn1_ps_func *cleanup, asn1_bio_state_t next); |
| 124 | static int asn1_bio_setup_ex(BIO *b, BIO_ASN1_BUF_CTX *ctx, | 123 | static int asn1_bio_setup_ex(BIO *b, BIO_ASN1_BUF_CTX *ctx, |
| @@ -148,35 +147,23 @@ static int | |||
| 148 | asn1_bio_new(BIO *b) | 147 | asn1_bio_new(BIO *b) |
| 149 | { | 148 | { |
| 150 | BIO_ASN1_BUF_CTX *ctx; | 149 | BIO_ASN1_BUF_CTX *ctx; |
| 151 | ctx = malloc(sizeof(BIO_ASN1_BUF_CTX)); | 150 | |
| 152 | if (!ctx) | 151 | if ((ctx = calloc(1, sizeof(*ctx))) == NULL) |
| 153 | return 0; | 152 | return 0; |
| 154 | if (!asn1_bio_init(ctx, DEFAULT_ASN1_BUF_SIZE)) { | 153 | |
| 154 | if ((ctx->buf = malloc(DEFAULT_ASN1_BUF_SIZE)) == NULL) { | ||
| 155 | free(ctx); | 155 | free(ctx); |
| 156 | return 0; | 156 | return 0; |
| 157 | } | 157 | } |
| 158 | ctx->bufsize = DEFAULT_ASN1_BUF_SIZE; | ||
| 159 | ctx->asn1_class = V_ASN1_UNIVERSAL; | ||
| 160 | ctx->asn1_tag = V_ASN1_OCTET_STRING; | ||
| 161 | ctx->state = ASN1_STATE_START; | ||
| 162 | |||
| 158 | b->init = 1; | 163 | b->init = 1; |
| 159 | b->ptr = (char *)ctx; | 164 | b->ptr = (char *)ctx; |
| 160 | b->flags = 0; | 165 | b->flags = 0; |
| 161 | return 1; | ||
| 162 | } | ||
| 163 | 166 | ||
| 164 | static int | ||
| 165 | asn1_bio_init(BIO_ASN1_BUF_CTX *ctx, int size) | ||
| 166 | { | ||
| 167 | ctx->buf = malloc(size); | ||
| 168 | if (!ctx->buf) | ||
| 169 | return 0; | ||
| 170 | ctx->bufsize = size; | ||
| 171 | ctx->bufpos = 0; | ||
| 172 | ctx->buflen = 0; | ||
| 173 | ctx->copylen = 0; | ||
| 174 | ctx->asn1_class = V_ASN1_UNIVERSAL; | ||
| 175 | ctx->asn1_tag = V_ASN1_OCTET_STRING; | ||
| 176 | ctx->ex_buf = NULL; | ||
| 177 | ctx->ex_pos = 0; | ||
| 178 | ctx->ex_len = 0; | ||
| 179 | ctx->state = ASN1_STATE_START; | ||
| 180 | return 1; | 167 | return 1; |
| 181 | } | 168 | } |
| 182 | 169 | ||
