diff --git a/configure.in b/configure.in index 781eedf..6a1e85f 100644 --- a/configure.in +++ b/configure.in @@ -554,7 +554,7 @@ fi AM_CONDITIONAL([ENABLE_PKCSEP11_MIGRATE], [test "x$enable_pkcsep11_migrate" = "xyes"]) -CFLAGS="$CFLAGS -DPKCS64 -D_XOPEN_SOURCE=500 -Wall -Wno-pointer-sign" +CFLAGS="$CFLAGS -DPKCS64 -D_XOPEN_SOURCE=600 -Wall -Wno-pointer-sign" CFLAGS+=' -DCONFIG_PATH=\"$(localstatedir)/lib/opencryptoki\" -DSBIN_PATH=\"$(sbindir)\" -DLIB_PATH=\"$(libdir)\" -DLOCKDIR_PATH=\"$(lockdir)\" -DOCK_CONFDIR=\"$(sysconfdir)/opencryptoki\" -DOCK_LOGDIR=\"$(logdir)\"' diff --git a/usr/lib/pkcs11/common/new_host.c b/usr/lib/pkcs11/common/new_host.c index 1bc0403..03fcec2 100755 --- a/usr/lib/pkcs11/common/new_host.c +++ b/usr/lib/pkcs11/common/new_host.c @@ -358,8 +358,11 @@ void Fork_Initializer(void) * When implemented... Although logout_all should clear this up. */ - bt_destroy(&priv_token_obj_btree, object_free); - bt_destroy(&publ_token_obj_btree, object_free); + /* the funny (void (*)(void *)) cast here casts from + * void *func(OBJECT *) to void *func(void *) which is what the + * compiler needs according to the bt_destroy() declaration. */ + bt_destroy(&priv_token_obj_btree, (void (*)(void *)) object_free); + bt_destroy(&publ_token_obj_btree, (void (*)(void *)) object_free); /* Need to do something to prevent the shared memory from * having the objects loaded again.... The most likely place diff --git a/usr/lib/pkcs11/common/obj_mgr.c b/usr/lib/pkcs11/common/obj_mgr.c index 80f5998..8d288fd 100755 --- a/usr/lib/pkcs11/common/obj_mgr.c +++ b/usr/lib/pkcs11/common/obj_mgr.c @@ -1080,7 +1080,7 @@ destroy_object_cb(void *node) OBJECT *o; if (map->is_session_obj) - bt_node_free(&sess_obj_btree, map->obj_handle, object_free); + bt_node_free(&sess_obj_btree, map->obj_handle, (void (*)(void *)) object_free); else { if (map->is_private) o = bt_get_node_value(&priv_token_obj_btree, map->obj_handle); @@ -1105,9 +1105,9 @@ destroy_object_cb(void *node) XProcUnLock(); if (map->is_private) - bt_node_free(&priv_token_obj_btree, map->obj_handle, object_free); + bt_node_free(&priv_token_obj_btree, map->obj_handle, (void (*)(void *)) object_free); else - bt_node_free(&publ_token_obj_btree, map->obj_handle, object_free); + bt_node_free(&publ_token_obj_btree, map->obj_handle, (void (*)(void *)) object_free); } done: free(map); @@ -1187,9 +1187,9 @@ delete_token_obj_cb(void *node, unsigned long map_handle, void *p3) XProcUnLock(); if (map->is_private) - bt_node_free(&priv_token_obj_btree, map->obj_handle, object_free); + bt_node_free(&priv_token_obj_btree, map->obj_handle, (void (*)(void *)) object_free); else - bt_node_free(&publ_token_obj_btree, map->obj_handle, object_free); + bt_node_free(&publ_token_obj_btree, map->obj_handle, (void (*)(void *)) object_free); } done: /* delete @node from this btree */ @@ -1741,7 +1741,7 @@ purge_session_obj_cb(void *node, unsigned long obj_handle, void *p3) if (obj->map_handle) bt_node_free(&object_map_btree, obj->map_handle, free); - bt_node_free(&sess_obj_btree, obj_handle, object_free); + bt_node_free(&sess_obj_btree, obj_handle, (void (*)(void *)) object_free); } } } @@ -1790,7 +1790,7 @@ purge_token_obj_cb(void *node, unsigned long obj_handle, void *p3) if (obj->map_handle) bt_node_free(&object_map_btree, obj->map_handle, free); - bt_node_free(t, obj_handle, object_free); + bt_node_free(t, obj_handle, (void (*)(void *)) object_free); } // this routine cleans up the list of token objects. in general, we don't @@ -2343,7 +2343,7 @@ delete_objs_from_btree_cb(void *node, unsigned long obj_handle, void *p3) } /* didn't find it in SHM, delete it from its btree */ - bt_node_free(ua->t, obj_handle, object_free); + bt_node_free(ua->t, obj_handle, (void (*)(void *)) object_free); } void diff --git a/usr/lib/pkcs11/ep11_stdll/new_host.c b/usr/lib/pkcs11/ep11_stdll/new_host.c index 0c21b54..2939ab2 100644 --- a/usr/lib/pkcs11/ep11_stdll/new_host.c +++ b/usr/lib/pkcs11/ep11_stdll/new_host.c @@ -347,8 +347,8 @@ void Fork_Initializer(void) * When implemented... Although logout_all should clear this up. */ - bt_destroy(&priv_token_obj_btree, object_free); - bt_destroy(&publ_token_obj_btree, object_free); + bt_destroy(&priv_token_obj_btree, (void (*)(void *)) object_free); + bt_destroy(&publ_token_obj_btree, (void (*)(void *)) object_free); /* Need to do something to prevent the shared memory from * having the objects loaded again.... The most likely place diff --git a/usr/lib/pkcs11/icsf_stdll/icsf_config_lexer.l b/usr/lib/pkcs11/icsf_stdll/icsf_config_lexer.l index 9f9c185..45730b8 100644 --- a/usr/lib/pkcs11/icsf_stdll/icsf_config_lexer.l +++ b/usr/lib/pkcs11/icsf_stdll/icsf_config_lexer.l @@ -284,6 +284,9 @@ %{ #include #include "icsf_config_parse.h" + +extern void yyerror(const char *s); + %} %option noyywrap diff --git a/usr/lib/pkcs11/icsf_stdll/icsf_config_parse.y b/usr/lib/pkcs11/icsf_stdll/icsf_config_parse.y index e65166a..7223e95 100644 --- a/usr/lib/pkcs11/icsf_stdll/icsf_config_parse.y +++ b/usr/lib/pkcs11/icsf_stdll/icsf_config_parse.y @@ -308,6 +308,8 @@ int out_rc; /* Function used to report error. */ void yyerror(const char *str); +extern int yylex(); + /* */ struct ref { char *key; diff --git a/usr/lib/pkcs11/icsf_stdll/new_host.c b/usr/lib/pkcs11/icsf_stdll/new_host.c index 3a36d36..12e32cc 100644 --- a/usr/lib/pkcs11/icsf_stdll/new_host.c +++ b/usr/lib/pkcs11/icsf_stdll/new_host.c @@ -344,8 +344,8 @@ void Fork_Initializer(void) * When implemented... Although logout_all should clear this up. */ - bt_destroy(&priv_token_obj_btree, object_free); - bt_destroy(&publ_token_obj_btree, object_free); + bt_destroy(&priv_token_obj_btree, (void (*)(void *)) object_free); + bt_destroy(&publ_token_obj_btree, (void (*)(void *)) object_free); /* Need to do something to prevent the shared memory from * having the objects loaded again.... The most likely place diff --git a/usr/sbin/pkcsslotd/lexer.l b/usr/sbin/pkcsslotd/lexer.l index d2d502c..81399d1 100644 --- a/usr/sbin/pkcsslotd/lexer.l +++ b/usr/sbin/pkcsslotd/lexer.l @@ -291,6 +291,8 @@ int line_num = 1; +extern void yyerror(const char *s); + %} %option noyywrap diff --git a/usr/sbin/pkcsslotd/parser.y b/usr/sbin/pkcsslotd/parser.y index 6a7f12a..872c527 100644 --- a/usr/sbin/pkcsslotd/parser.y +++ b/usr/sbin/pkcsslotd/parser.y @@ -310,6 +310,7 @@ extern FILE *yyin; extern int yyparse(); extern void yyerror(const char *s); extern int line_num; +extern int yylex(); typedef enum { KW_STDLL, @@ -337,6 +338,9 @@ static const struct ock_key ock_keywords[] = { void set_init(void); void set_defaults(void); +int lookup_keyword(const char *key); +int do_str(char *slotinfo, int size, char* kw, char *val); +int do_vers(CK_VERSION *slotinfo, char *kw, char *val); %} %union {