On Wed, 10 Mar 2021 21:55:43 +0100, Christian Göttsche <cgzo...@googlemail.com> wrote: > Am Mi., 10. März 2021 um 21:44 Uhr schrieb Wietse Venema > <wie...@porcupine.org>: > > > > Christian G?ttsche: > > > -g -O2 -I. -I../../include -DLINUX4 -c xsasl_cyrus_server.c > > > xsasl_cyrus_server.c:185:26: warning: initialization of ?int > > > (*)(void)? from incompatible pointer type ?int (*)(void *, char **)? > > > [-Wincompatible-pointer-types] > > > 185 | {SASL_CB_GETCONFPATH,&xsasl_getconfpath, 0}, > > > | ^ > > > > I have: > > > > 182 static sasl_callback_t callbacks[] = { > > 183 {SASL_CB_LOG, (XSASL_CYRUS_CB) &xsasl_cyrus_log, > > NO_CALLBACK_CONTEXT}, > > 184 {SASL_CB_LIST_END, 0, 0} > > 185 }; > > > > Your code is different. > > > > > xsasl_cyrus_client.c: In function ?xsasl_cyrus_client_init?: > > > xsasl_cyrus_client.c:233:23: warning: initialization of ?int > > > (*)(void)? from incompatible pointer type ?int (*)(void *, char **)? > > > [-Wincompatible-pointer-types] > > > 233 | {SASL_CB_GETCONFPATH,&xsasl_getconfpath, 0}, > > > | ^ > > > > I have: > > > > 230 static sasl_callback_t callbacks[] = { > > 231 {SASL_CB_LOG, (XSASL_CYRUS_CB) &xsasl_cyrus_log, 0}, > > 232 {SASL_CB_LIST_END, 0, 0} > > 233 }; > > > > Please complain to the maintainer of your distro. > > > > Seems to be a caused by a flawed Debian patch: > https://salsa.debian.org/postfix-team/postfix-dev/-/blob/debian/master/debian/patches/07_sasl_config.diff
Yes, I spotted this warning too when rebuilding the package with my tentative fix. This part is indeed a Debian patch, but the part involved (but not at fault, in my current understanding) in the crash is AFAICS from vanilla postfix, and in a different callback list. But this is moot either way, as the SASL structure definition prevents the compiler from giving any helpful warning/error by defining the callback type as: libsasl2-dev 2.1.27+dfsg-2.1: /usr/include/sasl/sasl.h typedef struct sasl_callback { /* Identifies the type of the callback function. * Mechanisms must ignore callbacks with id's they don't recognize. */ unsigned long id; int (*proc)(void); /* Callback function. Types of arguments vary by 'id' */ void *context; } sasl_callback_t; So any callback "proc" member has to be explicitly cast as any parameter at all will trigger a warning. Which seems an unfortunate decision to my very limited C experience, but is not postfix' responsibility. Regards, -- Vincent Pelletier GPG fingerprint 983A E8B7 3B91 1598 7A92 3845 CAC9 3691 4257 B0C1