Loading crypto/stack/safestack.h +78 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes crypto/stack/stack.c +13 −13 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ char *sk_delete(STACK *st, int loc) return(ret); } int sk_find(STACK *st, char *data) static int internal_find(STACK *st, char *data, int ret_val_options) { char **r; int i; Loading @@ -233,19 +233,19 @@ int sk_find(STACK *st, char *data) * not (type *) pointers, but the *pointers* to (type *) pointers, * so we get our extra level of pointer dereferencing that way. */ comp_func=(int (*)(const void *,const void *))(st->comp); r=(char **)bsearch(&data,(char *)st->data, st->num,sizeof(char *), comp_func); r=(char **)OBJ_bsearch(&data,(char *)st->data, st->num,sizeof(char *),comp_func,ret_val_options); if (r == NULL) return(-1); i=(int)(r-st->data); for ( ; i>0; i--) /* This needs a cast because the type being pointed to from * the "&" expressions are (char *) rather than (const char *). * For an explanation, read: * http://www.eskimo.com/~scs/C-faq/q11.10.html :-) */ if ((*st->comp)((const char * const *)&(st->data[i-1]), (const char * const *)&data) < 0) break; return(i); return((int)(r-st->data)); } int sk_find(STACK *st, char *data) { return internal_find(st, data, OBJ_BSEARCH_FIRST_VALUE_ON_MATCH); } int sk_find_ex(STACK *st, char *data) { return internal_find(st, data, OBJ_BSEARCH_VALUE_ON_NOMATCH); } int sk_push(STACK *st, char *data) Loading crypto/stack/stack.h +1 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ int sk_insert(STACK *sk,char *data,int where); char *sk_delete(STACK *st,int loc); char *sk_delete_ptr(STACK *st, char *p); int sk_find(STACK *st,char *data); int sk_find_ex(STACK *st,char *data); int sk_push(STACK *st,char *data); int sk_unshift(STACK *st,char *data); char *sk_shift(STACK *st); Loading util/mkstack.pl +1 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ while(<IN>) { #define sk_${type_thing}_push(st, val) SKM_sk_push($type_thing, (st), (val)) #define sk_${type_thing}_unshift(st, val) SKM_sk_unshift($type_thing, (st), (val)) #define sk_${type_thing}_find(st, val) SKM_sk_find($type_thing, (st), (val)) #define sk_${type_thing}_find_ex(st, val) SKM_sk_find_ex($type_thing, (st), (val)) #define sk_${type_thing}_delete(st, i) SKM_sk_delete($type_thing, (st), (i)) #define sk_${type_thing}_delete_ptr(st, ptr) SKM_sk_delete_ptr($type_thing, (st), (ptr)) #define sk_${type_thing}_insert(st, val, i) SKM_sk_insert($type_thing, (st), (val), (i)) Loading Loading
crypto/stack/safestack.h +78 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes
crypto/stack/stack.c +13 −13 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ char *sk_delete(STACK *st, int loc) return(ret); } int sk_find(STACK *st, char *data) static int internal_find(STACK *st, char *data, int ret_val_options) { char **r; int i; Loading @@ -233,19 +233,19 @@ int sk_find(STACK *st, char *data) * not (type *) pointers, but the *pointers* to (type *) pointers, * so we get our extra level of pointer dereferencing that way. */ comp_func=(int (*)(const void *,const void *))(st->comp); r=(char **)bsearch(&data,(char *)st->data, st->num,sizeof(char *), comp_func); r=(char **)OBJ_bsearch(&data,(char *)st->data, st->num,sizeof(char *),comp_func,ret_val_options); if (r == NULL) return(-1); i=(int)(r-st->data); for ( ; i>0; i--) /* This needs a cast because the type being pointed to from * the "&" expressions are (char *) rather than (const char *). * For an explanation, read: * http://www.eskimo.com/~scs/C-faq/q11.10.html :-) */ if ((*st->comp)((const char * const *)&(st->data[i-1]), (const char * const *)&data) < 0) break; return(i); return((int)(r-st->data)); } int sk_find(STACK *st, char *data) { return internal_find(st, data, OBJ_BSEARCH_FIRST_VALUE_ON_MATCH); } int sk_find_ex(STACK *st, char *data) { return internal_find(st, data, OBJ_BSEARCH_VALUE_ON_NOMATCH); } int sk_push(STACK *st, char *data) Loading
crypto/stack/stack.h +1 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ int sk_insert(STACK *sk,char *data,int where); char *sk_delete(STACK *st,int loc); char *sk_delete_ptr(STACK *st, char *p); int sk_find(STACK *st,char *data); int sk_find_ex(STACK *st,char *data); int sk_push(STACK *st,char *data); int sk_unshift(STACK *st,char *data); char *sk_shift(STACK *st); Loading
util/mkstack.pl +1 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ while(<IN>) { #define sk_${type_thing}_push(st, val) SKM_sk_push($type_thing, (st), (val)) #define sk_${type_thing}_unshift(st, val) SKM_sk_unshift($type_thing, (st), (val)) #define sk_${type_thing}_find(st, val) SKM_sk_find($type_thing, (st), (val)) #define sk_${type_thing}_find_ex(st, val) SKM_sk_find_ex($type_thing, (st), (val)) #define sk_${type_thing}_delete(st, i) SKM_sk_delete($type_thing, (st), (i)) #define sk_${type_thing}_delete_ptr(st, ptr) SKM_sk_delete_ptr($type_thing, (st), (ptr)) #define sk_${type_thing}_insert(st, val, i) SKM_sk_insert($type_thing, (st), (val), (i)) Loading