From 68efafc513788863339c199d22048ef275832094 Mon Sep 17 00:00:00 2001 From: FdaSilvaYY Date: Mon, 27 Jun 2016 21:57:58 +0200 Subject: Add checks on sk_TYPE_push() returned value Reviewed-by: Rich Salz Reviewed-by: Matt Caswell --- crypto/objects/o_names.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'crypto/objects') 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) -- cgit v1.2.3