From 8e89e85f556f549f05d3b49f5408a217ac5e3700 Mon Sep 17 00:00:00 2001 From: FdaSilvaYY Date: Sun, 6 Mar 2016 21:26:46 +0100 Subject: [PATCH] Fix some missing inits Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/997) --- crypto/asn1/a_strnid.c | 1 + crypto/asn1/bio_asn1.c | 7 +++++-- crypto/asn1/bio_ndef.c | 1 + crypto/asn1/tasn_scn.c | 8 ++++++++ crypto/bio/bss_bio.c | 4 ++++ 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/crypto/asn1/a_strnid.c b/crypto/asn1/a_strnid.c index 118e0cb388..188fa9ea26 100644 --- a/crypto/asn1/a_strnid.c +++ b/crypto/asn1/a_strnid.c @@ -213,6 +213,7 @@ static ASN1_STRING_TABLE *stable_get(int nid) rv->mask = tmp->mask; rv->flags = tmp->flags | STABLE_FLAGS_MALLOC; } else { + rv->nid = NID_undef; rv->minsize = -1; rv->maxsize = -1; rv->mask = 0; diff --git a/crypto/asn1/bio_asn1.c b/crypto/asn1/bio_asn1.c index 664b682726..f3d4776d72 100644 --- a/crypto/asn1/bio_asn1.c +++ b/crypto/asn1/bio_asn1.c @@ -96,6 +96,7 @@ const BIO_METHOD *BIO_f_asn1(void) static int asn1_bio_new(BIO *b) { BIO_ASN1_BUF_CTX *ctx; + ctx = OPENSSL_malloc(sizeof(*ctx)); if (ctx == NULL) return 0; @@ -120,10 +121,12 @@ static int asn1_bio_init(BIO_ASN1_BUF_CTX *ctx, int size) ctx->copylen = 0; ctx->asn1_class = V_ASN1_UNIVERSAL; ctx->asn1_tag = V_ASN1_OCTET_STRING; - ctx->ex_buf = 0; - ctx->ex_pos = 0; + 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; } diff --git a/crypto/asn1/bio_ndef.c b/crypto/asn1/bio_ndef.c index beeda9f89b..c43d2da4a4 100644 --- a/crypto/asn1/bio_ndef.c +++ b/crypto/asn1/bio_ndef.c @@ -90,6 +90,7 @@ BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it) ndef_aux->ndef_bio = sarg.ndef_bio; ndef_aux->boundary = sarg.boundary; ndef_aux->out = out; + ndef_aux->derbuf = NULL; BIO_ctrl(asn_bio, BIO_C_SET_EX_ARG, 0, ndef_aux); diff --git a/crypto/asn1/tasn_scn.c b/crypto/asn1/tasn_scn.c index 1bdd2dfec7..7062e2355f 100644 --- a/crypto/asn1/tasn_scn.c +++ b/crypto/asn1/tasn_scn.c @@ -25,12 +25,20 @@ ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx)) { ASN1_SCTX *ret; + ret = OPENSSL_malloc(sizeof(*ret)); if (ret == NULL) { ASN1err(ASN1_F_ASN1_SCTX_NEW, ERR_R_MALLOC_FAILURE); return NULL; } + ret->it = ret->tt = NULL; + ret->flags = 0; + ret->skidx = ret->depth = 0; + ret->sname = ret->fname = NULL; + ret->prim_type = 0; + ret->field = NULL; ret->scan_cb = scan_cb; + ret->app_data = NULL; return ret; } diff --git a/crypto/bio/bss_bio.c b/crypto/bio/bss_bio.c index 394080dd2f..9f1300e0b9 100644 --- a/crypto/bio/bss_bio.c +++ b/crypto/bio/bss_bio.c @@ -81,9 +81,13 @@ static int bio_new(BIO *bio) return 0; b->peer = NULL; + b->closed = 0; + b->len = 0; + b->offset = 0; /* enough for one TLS record (just a default) */ b->size = 17 * 1024; b->buf = NULL; + b->request = 0; bio->ptr = b; return 1; -- 2.34.1