summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbeck <>2019-05-12 00:09:59 +0000
committerbeck <>2019-05-12 00:09:59 +0000
commit68dde7dc1bde1d0d7884794703c389228b675481 (patch)
tree3d11fed3eb2b9e88d572f6ce3b2d6845cbacc6a4
parent251c968a1a579317a4d4d8ff6a9a3a0b2eb03be2 (diff)
downloadopenbsd-68dde7dc1bde1d0d7884794703c389228b675481.tar.gz
openbsd-68dde7dc1bde1d0d7884794703c389228b675481.tar.bz2
openbsd-68dde7dc1bde1d0d7884794703c389228b675481.zip
Stop the eyebleed in here and just use calloc
-rw-r--r--src/lib/libcrypto/lhash/lhash.c39
1 files changed, 8 insertions, 31 deletions
diff --git a/src/lib/libcrypto/lhash/lhash.c b/src/lib/libcrypto/lhash/lhash.c
index ac6cc43ea5..a68e466700 100644
--- a/src/lib/libcrypto/lhash/lhash.c
+++ b/src/lib/libcrypto/lhash/lhash.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: lhash.c,v 1.18 2016/11/08 20:20:06 miod Exp $ */ 1/* $OpenBSD: lhash.c,v 1.19 2019/05/12 00:09:59 beck Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -116,45 +116,22 @@ _LHASH *
116lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c) 116lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c)
117{ 117{
118 _LHASH *ret; 118 _LHASH *ret;
119 int i;
120 119
121 if ((ret = malloc(sizeof(_LHASH))) == NULL) 120 if ((ret = calloc(1, sizeof(_LHASH))) == NULL)
122 goto err0; 121 return NULL;
123 if ((ret->b = reallocarray(NULL, MIN_NODES, sizeof(LHASH_NODE *))) == NULL) 122 if ((ret->b = calloc(MIN_NODES, sizeof(LHASH_NODE *))) == NULL) {
124 goto err1; 123 free(ret);
125 for (i = 0; i < MIN_NODES; i++) 124 return NULL;
126 ret->b[i] = NULL; 125 }
127 ret->comp = ((c == NULL) ? (LHASH_COMP_FN_TYPE)strcmp : c); 126 ret->comp = ((c == NULL) ? (LHASH_COMP_FN_TYPE)strcmp : c);
128 ret->hash = ((h == NULL) ? (LHASH_HASH_FN_TYPE)lh_strhash : h); 127 ret->hash = ((h == NULL) ? (LHASH_HASH_FN_TYPE)lh_strhash : h);
129 ret->num_nodes = MIN_NODES / 2; 128 ret->num_nodes = MIN_NODES / 2;
130 ret->num_alloc_nodes = MIN_NODES; 129 ret->num_alloc_nodes = MIN_NODES;
131 ret->p = 0;
132 ret->pmax = MIN_NODES / 2; 130 ret->pmax = MIN_NODES / 2;
133 ret->up_load = UP_LOAD; 131 ret->up_load = UP_LOAD;
134 ret->down_load = DOWN_LOAD; 132 ret->down_load = DOWN_LOAD;
135 ret->num_items = 0;
136
137 ret->num_expands = 0;
138 ret->num_expand_reallocs = 0;
139 ret->num_contracts = 0;
140 ret->num_contract_reallocs = 0;
141 ret->num_hash_calls = 0;
142 ret->num_comp_calls = 0;
143 ret->num_insert = 0;
144 ret->num_replace = 0;
145 ret->num_delete = 0;
146 ret->num_no_delete = 0;
147 ret->num_retrieve = 0;
148 ret->num_retrieve_miss = 0;
149 ret->num_hash_comps = 0;
150
151 ret->error = 0;
152 return (ret);
153 133
154err1: 134 return (ret);
155 free(ret);
156err0:
157 return (NULL);
158} 135}
159 136
160void 137void