aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/objects/o_names.c
diff options
context:
space:
mode:
authorFdaSilvaYY <fdasilvayy@gmail.com>2016-06-27 21:57:58 +0200
committerMatt Caswell <matt@openssl.org>2016-07-05 17:45:50 +0100
commit68efafc513788863339c199d22048ef275832094 (patch)
tree2a409883db3b7f56d4571d77735c964bed640669 /crypto/objects/o_names.c
parentc2d551c01930df54bce6517cfecd214db6e98e80 (diff)
downloadopenssl-68efafc513788863339c199d22048ef275832094.tar.gz
Add checks on sk_TYPE_push() returned value
Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org>
Diffstat (limited to 'crypto/objects/o_names.c')
-rw-r--r--crypto/objects/o_names.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/crypto/objects/o_names.c b/crypto/objects/o_names.c
index c655a908dd..ed98df8c2f 100644
--- a/crypto/objects/o_names.c
+++ b/crypto/objects/o_names.c
@@ -76,8 +76,7 @@ int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *),
int (*cmp_func) (const char *, const char *),
void (*free_func) (const char *, int, const char *))
{
- int ret;
- int i;
+ int ret, i, push;
NAME_FUNCS *name_funcs;
if (name_funcs_stack == NULL) {
@@ -102,8 +101,15 @@ int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *),
name_funcs->hash_func = OPENSSL_LH_strhash;
name_funcs->cmp_func = obj_strcmp;
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE);
- sk_NAME_FUNCS_push(name_funcs_stack, name_funcs);
+
+ push = sk_NAME_FUNCS_push(name_funcs_stack, name_funcs);
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);
+
+ if (!push) {
+ OBJerr(OBJ_F_OBJ_NAME_NEW_INDEX, ERR_R_MALLOC_FAILURE);
+ OPENSSL_free(name_funcs);
+ return 0;
+ }
}
name_funcs = sk_NAME_FUNCS_value(name_funcs_stack, ret);
if (hash_func != NULL)