X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fasn1%2Fbio_asn1.c;h=3d3f8e4c1ef310fbaf1673647b6ae3e5053b0854;hp=f3d4776d72c4ed585aadee150b609ebc803eb70d;hb=3befffa39dbaf2688d823fcf2bdfc07d2487be48;hpb=8e89e85f556f549f05d3b49f5408a217ac5e3700 diff --git a/crypto/asn1/bio_asn1.c b/crypto/asn1/bio_asn1.c index f3d4776d72..3d3f8e4c1e 100644 --- a/crypto/asn1/bio_asn1.c +++ b/crypto/asn1/bio_asn1.c @@ -78,7 +78,11 @@ static int asn1_bio_setup_ex(BIO *b, BIO_ASN1_BUF_CTX *ctx, static const BIO_METHOD methods_asn1 = { BIO_TYPE_ASN1, "asn1", + /* TODO: Convert to new style write function */ + bwrite_conv, asn1_bio_write, + /* TODO: Convert to new style read function */ + bread_conv, asn1_bio_read, asn1_bio_puts, asn1_bio_gets, @@ -95,9 +99,8 @@ const BIO_METHOD *BIO_f_asn1(void) static int asn1_bio_new(BIO *b) { - BIO_ASN1_BUF_CTX *ctx; + BIO_ASN1_BUF_CTX *ctx = OPENSSL_zalloc(sizeof(*ctx)); - ctx = OPENSSL_malloc(sizeof(*ctx)); if (ctx == NULL) return 0; if (!asn1_bio_init(ctx, DEFAULT_ASN1_BUF_SIZE)) { @@ -116,17 +119,9 @@ static int asn1_bio_init(BIO_ASN1_BUF_CTX *ctx, int size) if (ctx->buf == NULL) return 0; ctx->bufsize = size; - ctx->bufpos = 0; - ctx->buflen = 0; - ctx->copylen = 0; ctx->asn1_class = V_ASN1_UNIVERSAL; ctx->asn1_tag = V_ASN1_OCTET_STRING; - ctx->ex_buf = NULL; - ctx->ex_len = 0; - ctx->ex_pos = 0; ctx->state = ASN1_STATE_START; - ctx->prefix = ctx->prefix_free = ctx->suffix = ctx->suffix_free = NULL; - ctx->ex_arg = NULL; return 1; } @@ -166,7 +161,6 @@ static int asn1_bio_write(BIO *b, const char *in, int inl) for (;;) { switch (ctx->state) { - /* Setup prefix data, call it */ case ASN1_STATE_START: if (!asn1_bio_setup_ex(b, ctx, ctx->prefix, @@ -232,7 +226,8 @@ static int asn1_bio_write(BIO *b, const char *in, int inl) break; - default: + case ASN1_STATE_POST_COPY: + case ASN1_STATE_DONE: BIO_clear_retry_flags(b); return 0;