summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorJ Mohan Rao Arisankala <mohan@barracuda.com>2016-05-05 23:43:32 +0530
committerMatt Caswell <matt@openssl.org>2016-05-09 09:06:06 +0100
commitcb1d435cac2a9a7bd6019f9f23648c8075251109 (patch)
tree37af32e7b67b0871d5542ac223bddfb66058f936 /crypto
parent5cf14ce074dfd1780ae4c68b2e7f083bfaf47530 (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.c4
-rw-r--r--crypto/bio/bio_err.c8
-rw-r--r--crypto/ec/ec_kmeth.c1
-rw-r--r--crypto/evp/bio_b64.c7
-rw-r--r--crypto/evp/bio_ok.c4
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);