summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/lhash/lhash.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/lhash/lhash.c')
-rw-r--r--src/lib/libcrypto/lhash/lhash.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/src/lib/libcrypto/lhash/lhash.c b/src/lib/libcrypto/lhash/lhash.c
index 04ea80203c..47f748081b 100644
--- a/src/lib/libcrypto/lhash/lhash.c
+++ b/src/lib/libcrypto/lhash/lhash.c
@@ -107,18 +107,18 @@ const char lh_version[]="lhash" OPENSSL_VERSION_PTEXT;
107#define UP_LOAD (2*LH_LOAD_MULT) /* load times 256 (default 2) */ 107#define UP_LOAD (2*LH_LOAD_MULT) /* load times 256 (default 2) */
108#define DOWN_LOAD (LH_LOAD_MULT) /* load times 256 (default 1) */ 108#define DOWN_LOAD (LH_LOAD_MULT) /* load times 256 (default 1) */
109 109
110static void expand(LHASH *lh); 110static void expand(_LHASH *lh);
111static void contract(LHASH *lh); 111static void contract(_LHASH *lh);
112static LHASH_NODE **getrn(LHASH *lh, const void *data, unsigned long *rhash); 112static LHASH_NODE **getrn(_LHASH *lh, const void *data, unsigned long *rhash);
113 113
114LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c) 114_LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c)
115 { 115 {
116 LHASH *ret; 116 _LHASH *ret;
117 int i; 117 int i;
118 118
119 if ((ret=(LHASH *)OPENSSL_malloc(sizeof(LHASH))) == NULL) 119 if ((ret=OPENSSL_malloc(sizeof(_LHASH))) == NULL)
120 goto err0; 120 goto err0;
121 if ((ret->b=(LHASH_NODE **)OPENSSL_malloc(sizeof(LHASH_NODE *)*MIN_NODES)) == NULL) 121 if ((ret->b=OPENSSL_malloc(sizeof(LHASH_NODE *)*MIN_NODES)) == NULL)
122 goto err1; 122 goto err1;
123 for (i=0; i<MIN_NODES; i++) 123 for (i=0; i<MIN_NODES; i++)
124 ret->b[i]=NULL; 124 ret->b[i]=NULL;
@@ -154,7 +154,7 @@ err0:
154 return(NULL); 154 return(NULL);
155 } 155 }
156 156
157void lh_free(LHASH *lh) 157void lh_free(_LHASH *lh)
158 { 158 {
159 unsigned int i; 159 unsigned int i;
160 LHASH_NODE *n,*nn; 160 LHASH_NODE *n,*nn;
@@ -176,7 +176,7 @@ void lh_free(LHASH *lh)
176 OPENSSL_free(lh); 176 OPENSSL_free(lh);
177 } 177 }
178 178
179void *lh_insert(LHASH *lh, void *data) 179void *lh_insert(_LHASH *lh, void *data)
180 { 180 {
181 unsigned long hash; 181 unsigned long hash;
182 LHASH_NODE *nn,**rn; 182 LHASH_NODE *nn,**rn;
@@ -214,7 +214,7 @@ void *lh_insert(LHASH *lh, void *data)
214 return(ret); 214 return(ret);
215 } 215 }
216 216
217void *lh_delete(LHASH *lh, const void *data) 217void *lh_delete(_LHASH *lh, const void *data)
218 { 218 {
219 unsigned long hash; 219 unsigned long hash;
220 LHASH_NODE *nn,**rn; 220 LHASH_NODE *nn,**rn;
@@ -245,7 +245,7 @@ void *lh_delete(LHASH *lh, const void *data)
245 return(ret); 245 return(ret);
246 } 246 }
247 247
248void *lh_retrieve(LHASH *lh, const void *data) 248void *lh_retrieve(_LHASH *lh, const void *data)
249 { 249 {
250 unsigned long hash; 250 unsigned long hash;
251 LHASH_NODE **rn; 251 LHASH_NODE **rn;
@@ -267,12 +267,15 @@ void *lh_retrieve(LHASH *lh, const void *data)
267 return(ret); 267 return(ret);
268 } 268 }
269 269
270static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func, 270static void doall_util_fn(_LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
271 LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg) 271 LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg)
272 { 272 {
273 int i; 273 int i;
274 LHASH_NODE *a,*n; 274 LHASH_NODE *a,*n;
275 275
276 if (lh == NULL)
277 return;
278
276 /* reverse the order so we search from 'top to bottom' 279 /* reverse the order so we search from 'top to bottom'
277 * We were having memory leaks otherwise */ 280 * We were having memory leaks otherwise */
278 for (i=lh->num_nodes-1; i>=0; i--) 281 for (i=lh->num_nodes-1; i>=0; i--)
@@ -282,6 +285,8 @@ static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
282 { 285 {
283 /* 28/05/91 - eay - n added so items can be deleted 286 /* 28/05/91 - eay - n added so items can be deleted
284 * via lh_doall */ 287 * via lh_doall */
288 /* 22/05/08 - ben - eh? since a is not passed,
289 * this should not be needed */
285 n=a->next; 290 n=a->next;
286 if(use_arg) 291 if(use_arg)
287 func_arg(a->data,arg); 292 func_arg(a->data,arg);
@@ -292,17 +297,17 @@ static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
292 } 297 }
293 } 298 }
294 299
295void lh_doall(LHASH *lh, LHASH_DOALL_FN_TYPE func) 300void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func)
296 { 301 {
297 doall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)0, NULL); 302 doall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)0, NULL);
298 } 303 }
299 304
300void lh_doall_arg(LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg) 305void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg)
301 { 306 {
302 doall_util_fn(lh, 1, (LHASH_DOALL_FN_TYPE)0, func, arg); 307 doall_util_fn(lh, 1, (LHASH_DOALL_FN_TYPE)0, func, arg);
303 } 308 }
304 309
305static void expand(LHASH *lh) 310static void expand(_LHASH *lh)
306 { 311 {
307 LHASH_NODE **n,**n1,**n2,*np; 312 LHASH_NODE **n,**n1,**n2,*np;
308 unsigned int p,i,j; 313 unsigned int p,i,j;
@@ -358,7 +363,7 @@ static void expand(LHASH *lh)
358 } 363 }
359 } 364 }
360 365
361static void contract(LHASH *lh) 366static void contract(_LHASH *lh)
362 { 367 {
363 LHASH_NODE **n,*n1,*np; 368 LHASH_NODE **n,*n1,*np;
364 369
@@ -397,7 +402,7 @@ static void contract(LHASH *lh)
397 } 402 }
398 } 403 }
399 404
400static LHASH_NODE **getrn(LHASH *lh, const void *data, unsigned long *rhash) 405static LHASH_NODE **getrn(_LHASH *lh, const void *data, unsigned long *rhash)
401 { 406 {
402 LHASH_NODE **ret,*n1; 407 LHASH_NODE **ret,*n1;
403 unsigned long hash,nn; 408 unsigned long hash,nn;
@@ -464,7 +469,7 @@ unsigned long lh_strhash(const char *c)
464 return((ret>>16)^ret); 469 return((ret>>16)^ret);
465 } 470 }
466 471
467unsigned long lh_num_items(const LHASH *lh) 472unsigned long lh_num_items(const _LHASH *lh)
468 { 473 {
469 return lh ? lh->num_items : 0; 474 return lh ? lh->num_items : 0;
470 } 475 }