summaryrefslogtreecommitdiffstats
path: root/crypto/lhash/lhash.c
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2023-09-20 15:45:56 +0200
committerBernd Edlinger <bernd.edlinger@hotmail.de>2023-09-21 14:50:01 +0200
commit5fbfd641aeebdf4b29a0749e13a79a1e59502878 (patch)
tree2a1cb15afc0039b2142562895ee7d350b2f0694e /crypto/lhash/lhash.c
parentd4f22a915ac50570015a23ad794032c4fb9496cb (diff)
Fix error handling in lhash contract
When the realloc fails in contract, this not a fatal error, since the memory is only shrinked. It is also no option to exit the function at this point, since that would leave the hash table in an inconsistent state. Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22154)
Diffstat (limited to 'crypto/lhash/lhash.c')
-rw-r--r--crypto/lhash/lhash.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/crypto/lhash/lhash.c b/crypto/lhash/lhash.c
index 526af83026..9d2b284ae0 100644
--- a/crypto/lhash/lhash.c
+++ b/crypto/lhash/lhash.c
@@ -260,12 +260,12 @@ static void contract(OPENSSL_LHASH *lh)
if (n == NULL) {
/* fputs("realloc error in lhash", stderr); */
lh->error++;
- return;
+ } else {
+ lh->b = n;
}
lh->num_alloc_nodes /= 2;
lh->pmax /= 2;
lh->p = lh->pmax - 1;
- lh->b = n;
} else
lh->p--;