diff options
author | mrpre <mrpre@163.com> | 2016-06-16 18:00:38 +0800 |
---|---|---|
committer | Rich Salz <rsalz@openssl.org> | 2016-07-01 10:56:19 -0400 |
commit | 0a1d3a8152ffb96d42e56c3c1f04eb14a45e66aa (patch) | |
tree | 5e938d3735ebd3a0899ec56f8fcc3e3be491d656 /crypto | |
parent | a66069dbcd020f25b80c66c0e71e137683c54914 (diff) |
add return value for expand
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1223)
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/lhash/lhash.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/crypto/lhash/lhash.c b/crypto/lhash/lhash.c index 3e58eea9c5..1ca4289e05 100644 --- a/crypto/lhash/lhash.c +++ b/crypto/lhash/lhash.c @@ -20,7 +20,7 @@ #define UP_LOAD (2*LH_LOAD_MULT) /* load times 256 (default 2) */ #define DOWN_LOAD (LH_LOAD_MULT) /* load times 256 (default 1) */ -static void expand(OPENSSL_LHASH *lh); +static int expand(OPENSSL_LHASH *lh); static void contract(OPENSSL_LHASH *lh); static OPENSSL_LH_NODE **getrn(OPENSSL_LHASH *lh, const void *data, unsigned long *rhash); @@ -72,11 +72,17 @@ void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data) unsigned long hash; OPENSSL_LH_NODE *nn, **rn; void *ret; - + int val = 0; + lh->error = 0; if (lh->up_load <= (lh->num_items * LH_LOAD_MULT / lh->num_nodes)) - expand(lh); - + val = expand(lh); + + if(val){ + lh->error++; + return (NULL); + } + rn = getrn(lh, data, &hash); if (*rn == NULL) { @@ -184,7 +190,7 @@ void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void doall_util_fn(lh, 1, (OPENSSL_LH_DOALL_FUNC)0, func, arg); } -static void expand(OPENSSL_LHASH *lh) +static int expand(OPENSSL_LHASH *lh) { OPENSSL_LH_NODE **n, **n1, **n2, *np; unsigned int p, i, j; @@ -216,7 +222,7 @@ static void expand(OPENSSL_LHASH *lh) /* fputs("realloc error in lhash",stderr); */ lh->error++; lh->p = 0; - return; + return -1; } for (i = (int)lh->num_alloc_nodes; i < j; i++) /* 26/02/92 eay */ n[i] = NULL; /* 02/03/92 eay */ @@ -226,6 +232,7 @@ static void expand(OPENSSL_LHASH *lh) lh->p = 0; lh->b = n; } + return 0; } static void contract(OPENSSL_LHASH *lh) |