Hi Ken, > I have built a eighth (and hopefully last) release candidate of SASL > 2.1.27 which can be downloaded from here: [...] > The primary reason for this candidate is to revert the GSSAPI flag > changes. I'd like to roll out the final release early next week, so > please test this RC as soon as possible. FWIW, building with GCC 8.1 gives the following warnings (1 -Wtautological-compare and all the others are -Wcast-function-type). Anyway, I confirm rc8 works fine with INN. saslutil.c: In function ‘sasl_utf8verify’: saslutil.c:305:29: warning: bitwise comparison always evaluates to true [-Wtautological-compare] if ((str[++i] & 0xC0) != 0xF0) return SASL_BADPROT; /* needed a 10 octet */ ^~ common.c:114:22: warning: cast between incompatible function types from ‘int (*)(void *, const char **)’ to ‘int (*)(void)’ [-Wcast-function-type] SASL_CB_GETPATH, (sasl_callback_ft)&_sasl_getpath, NULL ^ common.c:117:26: warning: cast between incompatible function types from ‘int (*)(void *, char **)’ to ‘int (*)(void)’ [-Wcast-function-type] SASL_CB_GETCONFPATH, (sasl_callback_ft)&_sasl_getconfpath, NULL ^ common.c: In function ‘sasl_set_path’: common.c:230:39: warning: cast between incompatible function types from ‘int (*)(void *, const char **)’ to ‘int (*)(void)’ [-Wcast-function-type] default_getpath_cb.proc = (sasl_callback_ft)&_sasl_getpath_simple; ^ common.c:244:43: warning: cast between incompatible function types from ‘int (*)(void *, const char **)’ to ‘int (*)(void)’ [-Wcast-function-type] default_getconfpath_cb.proc = (sasl_callback_ft)&_sasl_getconfpath_simple; ^ common.c: In function ‘_sasl_global_getopt’: common.c:1416:9: warning: cast between incompatible function types from ‘int (* const)(void)’ to ‘int (*)(void *, const char *, const char *, const char **, unsigned int *)’ [-Wcast-function-type] if (((sasl_getopt_t *)(callback->proc))(callback->context, ^ common.c: In function ‘_sasl_conn_getopt’: common.c:1457:9: warning: cast between incompatible function types from ‘int (* const)(void)’ to ‘int (*)(void *, const char *, const char *, const char **, unsigned int *)’ [-Wcast-function-type] && (((sasl_getopt_t *)(callback->proc))(callback->context, ^ common.c: In function ‘_sasl_getcallback’: common.c:1731:13: warning: cast between incompatible function types from ‘int (*)(void *, const char *, const char *, const char **, unsigned int *)’ to ‘int (*)(void)’ [-Wcast-function-type] *pproc = (sasl_callback_ft)&_sasl_conn_getopt; ^ common.c:1734:13: warning: cast between incompatible function types from ‘int (*)(void *, const char *, const char *, const char **, unsigned int *)’ to ‘int (*)(void)’ [-Wcast-function-type] *pproc = (sasl_callback_ft)&_sasl_global_getopt; ^ common.c:1779:14: warning: cast between incompatible function types from ‘int (*)(void *, int, const char *)’ to ‘int (*)(void)’ [-Wcast-function-type] *pproc = (sasl_callback_ft)&_sasl_syslog; ^ common.c:1792:14: warning: cast between incompatible function types from ‘int (*)(void *, int, const char **, size_t *)’ {aka ‘int (*)(void *, int, const char **, long unsigned int *)’} to ‘int (*)(void)’ [-Wcast-function-type] *pproc = (sasl_callback_ft)&_sasl_getsimple; ^ common.c:1796:14: warning: cast between incompatible function types from ‘int (*)(void *, char *, int)’ to ‘int (*)(void)’ [-Wcast-function-type] *pproc = (sasl_callback_ft)&_sasl_verifyfile; ^ common.c:1800:14: warning: cast between incompatible function types from ‘int (*)(sasl_conn_t *, void *, const char *, unsigned int, const char *, unsigned int, const char *, unsigned int, struct propctx *)’ {aka ‘int (*)(struct sasl_conn *, void *, const char *, unsigned int, const char *, unsigned int, const char *, unsigned int, struct propctx *)’} to ‘int (*)(void)’ [-Wcast-function-typ] *pproc = (sasl_callback_ft)&_sasl_proxy_policy; ^ common.c: In function ‘_sasl_find_verifyfile_callback’: common.c:2156:5: warning: cast between incompatible function types from ‘int (*)(void *, char *, int)’ to ‘int (*)(void)’ [-Wcast-function-type] (sasl_callback_ft)&_sasl_verifyfile, ^ server.c:619:15: warning: cast between incompatible function types from ‘int (* const)(void)’ to ‘int (*)(void *, char **)’ [-Wcast-function-type] result = ((sasl_getconfpath_t *)(getconfpath_cb->proc))(getconfpath_cb->context, ^ server.c:657:19: warning: cast between incompatible function types from ‘int (* const)(void)’ to ‘int (*)(void *, const char *, sasl_verify_type_t)’ {aka ‘int (*)(void *, const char *, enum <anonymous>)’} [-Wcast-function-type] result = ((sasl_verifyfile_t *)(verifyfile_cb->proc))(verifyfile_cb->context, ^ server.c: In function ‘sasl_server_init’: server.c:909:9: warning: cast between incompatible function types from ‘int (* const)(void)’ to ‘int (*)(void *, const char *, sasl_verify_type_t)’ {aka ‘int (*)(void *, const char *, enum <anonymous>)’} [-Wcast-function-type] ret = ((sasl_verifyfile_t *)(vf->proc))(vf->context, ^ dlopen.c: In function ‘_sasl_get_plugin’: dlopen.c:364:10: warning: cast between incompatible function types from ‘int (* const)(void)’ to ‘int (*)(void *, const char *, sasl_verify_type_t)’ {aka ‘int (*)(void *, const char *, enum <anonymous>)’} [-Wcast-function-type] r = ((sasl_verifyfile_t *)(verifyfile_cb->proc)) ^ dlopen.c: In function ‘_sasl_load_plugins’: dlopen.c:464:15: warning: cast between incompatible function types from ‘int (* const)(void)’ to ‘int (*)(void *, const char **)’ [-Wcast-function-type] result = ((sasl_getpath_t *)(getpath_cb->proc))(getpath_cb->context, ^ dbconverter-2.c:379:23: warning: cast between incompatible function types from int (*)(void *, const char *, const char *, const char **, unsigned int *)’ to int (*)(void)’ [-Wcast-function-type] { SASL_CB_GETOPT, (int (*)(void))&good_getopt, NULL }, ^ dbconverter-2.c: In function ‘main’: dbconverter-2.c:428:19: warning: cast between incompatible function types from void (*)(const char *, const char *, const char *, const char *, unsigned int)’ to ‘void * (*)(const char *, const char *, const char *, const char *, unsigned int)’ [-Wcast-function-type] listusers(db, (listcb_t *) &listusers_cb); ^ saslpasswd.c:256:23: warning: cast between incompatible function types from ‘int (*)(void *, const char *, const char *, const char **, unsigned int *)’ to ‘int (*)(void)’ [-Wcast-function-type] { SASL_CB_GETOPT, (sasl_callback_ft)&good_getopt, NULL }, ^ sasldblistusers.c:91:23: warning: cast between incompatible function types from ‘int (*)(void *, const char *, const char *, const char **, unsigned int *)’ to ‘int (*)(void)’ [-Wcast-function-type] { SASL_CB_GETOPT, (sasl_callback_ft)&good_getopt, NULL }, ^ pluginviewer.c: In function ‘main’: pluginviewer.c:559:22: warning: cast between incompatible function types from ‘int (*)(void *, int, const char *)’ to ‘int (*)(void)’ [-Wcast-function-type] callback->proc = (sasl_callback_ft)&sasl_my_log; ^ pluginviewer.c:566:26: warning: cast between incompatible function types from ‘int (*)(void *, const char **)’ to ‘int (*)(void)’ [-Wcast-function-type] callback->proc = (sasl_callback_ft)&getpath; ^ pluginviewer.c:575:22: warning: cast between incompatible function types from ‘int (*)(void *, const char *, const char *, const char **, unsigned int *)’ to ‘int (*)(void)’ [-Wcast-function-type] callback->proc = (sasl_callback_ft)&plugview_sasl_getopt; ^ -- Julien ÉLIE « Anybody can sympathise with the sufferings of a friend, but it requires a very fine nature to sympathise with a friend's success. » (Oscar Wilde)