Make sure not to read beyond end of buffer
[oweals/openssl.git] / crypto / lhash / lhash.c
index 9d815f0ca0c77c18ea2439d2667716bf9ce12060..04ea80203cc8ba192b21c186875190179071d70d 100644 (file)
 #include <openssl/crypto.h>
 #include <openssl/lhash.h>
 
-const char *lh_version="lhash" OPENSSL_VERSION_PTEXT;
+const char lh_version[]="lhash" OPENSSL_VERSION_PTEXT;
 
 #undef MIN_NODES 
 #define MIN_NODES      16
@@ -176,11 +176,11 @@ void lh_free(LHASH *lh)
        OPENSSL_free(lh);
        }
 
-void *lh_insert(LHASH *lh, const void *data)
+void *lh_insert(LHASH *lh, void *data)
        {
        unsigned long hash;
        LHASH_NODE *nn,**rn;
-       const void *ret;
+       void *ret;
 
        lh->error=0;
        if (lh->up_load <= (lh->num_items*LH_LOAD_MULT/lh->num_nodes))
@@ -197,7 +197,7 @@ void *lh_insert(LHASH *lh, const void *data)
                        }
                nn->data=data;
                nn->next=NULL;
-#ifndef NO_HASH_COMP
+#ifndef OPENSSL_NO_HASH_COMP
                nn->hash=hash;
 #endif
                *rn=nn;
@@ -211,14 +211,14 @@ void *lh_insert(LHASH *lh, const void *data)
                (*rn)->data=data;
                lh->num_replace++;
                }
-       return((void *)ret);
+       return(ret);
        }
 
 void *lh_delete(LHASH *lh, const void *data)
        {
        unsigned long hash;
        LHASH_NODE *nn,**rn;
-       const void *ret;
+       void *ret;
 
        lh->error=0;
        rn=getrn(lh,data,&hash);
@@ -242,14 +242,14 @@ void *lh_delete(LHASH *lh, const void *data)
                (lh->down_load >= (lh->num_items*LH_LOAD_MULT/lh->num_nodes)))
                contract(lh);
 
-       return((void *)ret);
+       return(ret);
        }
 
 void *lh_retrieve(LHASH *lh, const void *data)
        {
        unsigned long hash;
        LHASH_NODE **rn;
-       const void *ret;
+       void *ret;
 
        lh->error=0;
        rn=getrn(lh,data,&hash);
@@ -264,11 +264,11 @@ void *lh_retrieve(LHASH *lh, const void *data)
                ret= (*rn)->data;
                lh->num_retrieve++;
                }
-       return((void *)ret);
+       return(ret);
        }
 
 static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
-                       LHASH_DOALL_ARG_FN_TYPE func_arg, const void *arg)
+                         LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg)
        {
        int i;
        LHASH_NODE *a,*n;
@@ -294,12 +294,12 @@ static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
 
 void lh_doall(LHASH *lh, LHASH_DOALL_FN_TYPE func)
        {
-       doall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)NULL, NULL);
+       doall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)0, NULL);
        }
 
-void lh_doall_arg(LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, const void *arg)
+void lh_doall_arg(LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg)
        {
-       doall_util_fn(lh, 1, (LHASH_DOALL_FN_TYPE)NULL, func, arg);
+       doall_util_fn(lh, 1, (LHASH_DOALL_FN_TYPE)0, func, arg);
        }
 
 static void expand(LHASH *lh)
@@ -318,7 +318,7 @@ static void expand(LHASH *lh)
        
        for (np= *n1; np != NULL; )
                {
-#ifndef NO_HASH_COMP
+#ifndef OPENSSL_NO_HASH_COMP
                hash=np->hash;
 #else
                hash=lh->hash(np->data);
@@ -339,7 +339,7 @@ static void expand(LHASH *lh)
                {
                j=(int)lh->num_alloc_nodes*2;
                n=(LHASH_NODE **)OPENSSL_realloc(lh->b,
-                       (unsigned int)sizeof(LHASH_NODE *)*j);
+                       (int)(sizeof(LHASH_NODE *)*j));
                if (n == NULL)
                        {
 /*                     fputs("realloc error in lhash",stderr); */
@@ -401,7 +401,7 @@ static LHASH_NODE **getrn(LHASH *lh, const void *data, unsigned long *rhash)
        {
        LHASH_NODE **ret,*n1;
        unsigned long hash,nn;
-       int (*cf)();
+       LHASH_COMP_FN_TYPE cf;
 
        hash=(*(lh->hash))(data);
        lh->num_hash_calls++;
@@ -415,7 +415,7 @@ static LHASH_NODE **getrn(LHASH *lh, const void *data, unsigned long *rhash)
        ret= &(lh->b[(int)nn]);
        for (n1= *ret; n1 != NULL; n1=n1->next)
                {
-#ifndef NO_HASH_COMP
+#ifndef OPENSSL_NO_HASH_COMP
                lh->num_hash_comps++;
                if (n1->hash != hash)
                        {