diff options
author | J Mohan Rao Arisankala <mohan@barracuda.com> | 2016-05-05 23:43:32 +0530 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2016-05-09 09:06:06 +0100 |
commit | cb1d435cac2a9a7bd6019f9f23648c8075251109 (patch) | |
tree | 37af32e7b67b0871d5542ac223bddfb66058f936 /crypto | |
parent | 5cf14ce074dfd1780ae4c68b2e7f083bfaf47530 (diff) |
few missing allocation failure checks and releases on error paths
- Missing checks for allocation failure.
- releasing memory in few missing error paths
Reviewed-by: Kurt Roeckx <kurt@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/bio/b_addr.c | 4 | ||||
-rw-r--r-- | crypto/bio/bio_err.c | 8 | ||||
-rw-r--r-- | crypto/ec/ec_kmeth.c | 1 | ||||
-rw-r--r-- | crypto/evp/bio_b64.c | 7 | ||||
-rw-r--r-- | crypto/evp/bio_ok.c | 4 |
5 files changed, 16 insertions, 8 deletions
diff --git a/crypto/bio/b_addr.c b/crypto/bio/b_addr.c index 86c6c7eca8..1813f5a9bb 100644 --- a/crypto/bio/b_addr.c +++ b/crypto/bio/b_addr.c @@ -83,8 +83,10 @@ BIO_ADDR *BIO_ADDR_new(void) { BIO_ADDR *ret = OPENSSL_zalloc(sizeof(*ret)); - if (ret == NULL) + if (ret == NULL) { + BIOerr(BIO_F_BIO_ADDR_NEW, ERR_R_MALLOC_FAILURE); return NULL; + } ret->sa.sa_family = AF_UNSPEC; return ret; diff --git a/crypto/bio/bio_err.c b/crypto/bio/bio_err.c index 6bf1df66ab..e4b74adb8d 100644 --- a/crypto/bio/bio_err.c +++ b/crypto/bio/bio_err.c @@ -1,16 +1,11 @@ /* + * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html -*/ - -/* - * NOTE: this file was auto generated by the mkerr.pl script: any changes - * made to it will be overwritten when the script next updates this file, - * only reason strings will be preserved. */ #include <stdio.h> @@ -28,6 +23,7 @@ static ERR_STRING_DATA BIO_str_functs[] = { {ERR_FUNC(BIO_F_ADDR_STRINGS), "addr_strings"}, {ERR_FUNC(BIO_F_BIO_ACCEPT), "BIO_accept"}, {ERR_FUNC(BIO_F_BIO_ACCEPT_EX), "BIO_accept_ex"}, + {ERR_FUNC(BIO_F_BIO_ADDR_NEW), "BIO_ADDR_new"}, {ERR_FUNC(BIO_F_BIO_BER_GET_HEADER), "BIO_BER_GET_HEADER"}, {ERR_FUNC(BIO_F_BIO_CALLBACK_CTRL), "BIO_callback_ctrl"}, {ERR_FUNC(BIO_F_BIO_CONNECT), "BIO_connect"}, diff --git a/crypto/ec/ec_kmeth.c b/crypto/ec/ec_kmeth.c index 003421eabe..75e58d5316 100644 --- a/crypto/ec/ec_kmeth.c +++ b/crypto/ec/ec_kmeth.c @@ -166,6 +166,7 @@ EC_KEY *EC_KEY_new_method(ENGINE *engine) ret->references = 1; if (ret->meth->init != NULL && ret->meth->init(ret) == 0) { + ECerr(EC_F_EC_KEY_NEW_METHOD, ERR_R_INIT_FAIL); EC_KEY_free(ret); return NULL; } diff --git a/crypto/evp/bio_b64.c b/crypto/evp/bio_b64.c index cdb50b4584..6a95cf6dd6 100644 --- a/crypto/evp/bio_b64.c +++ b/crypto/evp/bio_b64.c @@ -118,10 +118,15 @@ static int b64_new(BIO *bi) ctx = OPENSSL_zalloc(sizeof(*ctx)); if (ctx == NULL) - return (0); + return 0; ctx->cont = 1; ctx->start = 1; + if (ctx->base64 == NULL) { + OPENSSL_free(ctx); + return 0; + } + ctx->base64 = EVP_ENCODE_CTX_new(); BIO_set_data(bi, ctx); BIO_set_init(bi, 1); diff --git a/crypto/evp/bio_ok.c b/crypto/evp/bio_ok.c index 0ac1a31a63..65577c0f6c 100644 --- a/crypto/evp/bio_ok.c +++ b/crypto/evp/bio_ok.c @@ -183,6 +183,10 @@ static int ok_new(BIO *bi) ctx->cont = 1; ctx->sigio = 1; ctx->md = EVP_MD_CTX_new(); + if (ctx->md == NULL) { + OPENSSL_free(ctx); + return 0; + } BIO_set_init(bi, 0); BIO_set_data(bi, ctx); |