From: Antoine Jacoutot Subject: Re: [llvm22] cyrus-sasl2 build fix To: Theo Buehler Cc: ports@openbsd.org Date: Tue, 19 May 2026 23:17:08 +0200 On Tue, May 19, 2026 at 08:22:20PM +0200, Theo Buehler wrote: > libdes's md5 is starting to show its age. It's abusing unsigned char * > for void * which causes llvm22 to error with > > md5.c:400:14: error: incompatible pointer types passing 'unsigned char (*)[65]' to parameter of type 'POINTER' (aka 'unsigned char *') [-Wincompatible-pointer-types] > > The crude patch below replaces the hand-rolled memcpy() and memset() > with the libc ones. (Redefining POINTER to void * causes other problems). OK, thanks. > Index: Makefile > =================================================================== > RCS file: /cvs/ports/security/cyrus-sasl2/Makefile,v > diff -u -p -r1.118 Makefile > --- Makefile 21 Jul 2025 16:10:45 -0000 1.118 > +++ Makefile 19 May 2026 18:10:16 -0000 > @@ -5,7 +5,7 @@ COMMENT= RFC 2222 SASL (Simple Authenti > > V= 2.1.28 > DISTNAME= cyrus-sasl-${V} > -REVISION= 2 > +REVISION= 3 > > SHARED_LIBS += sasl2 3.1 # 3.0 > SHARED_LIBS += anonymous 0.0 # 3.0 > Index: patches/patch-lib_md5_c > =================================================================== > RCS file: patches/patch-lib_md5_c > diff -N patches/patch-lib_md5_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-lib_md5_c 19 May 2026 18:10:07 -0000 > @@ -0,0 +1,32 @@ > +Index: lib/md5.c > +--- lib/md5.c.orig > ++++ lib/md5.c > +@@ -59,8 +59,12 @@ static void Encode PROTO_LIST > + ((unsigned char *, UINT4 *, unsigned int)); > + static void Decode PROTO_LIST > + ((UINT4 *, const unsigned char *, unsigned int)); > ++#if 0 > + static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int)); > + static void MD5_memset PROTO_LIST ((POINTER, int, unsigned int)); > ++#endif > ++#define MD5_memcpy memcpy > ++#define MD5_memset memset > + > + static unsigned char PADDING[64] = { > + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > +@@ -317,6 +321,7 @@ unsigned int len; > + > + */ > + > ++#if 0 > + static void MD5_memcpy (output, input, len) > + POINTER output; > + POINTER input; > +@@ -341,6 +346,7 @@ unsigned int len; > + for (i = 0; i < len; i++) > + ((char *)output)[i] = (char)value; > + } > ++#endif > + > + void _sasl_hmac_md5_init(HMAC_MD5_CTX *hmac, > + const unsigned char *key, > Index: patches/patch-saslauthd_md5_c > =================================================================== > RCS file: patches/patch-saslauthd_md5_c > diff -N patches/patch-saslauthd_md5_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-saslauthd_md5_c 19 May 2026 18:10:07 -0000 > @@ -0,0 +1,32 @@ > +Index: saslauthd/md5.c > +--- saslauthd/md5.c.orig > ++++ saslauthd/md5.c > +@@ -59,8 +59,12 @@ static void Encode PROTO_LIST > + ((unsigned char *, UINT4 *, unsigned int)); > + static void Decode PROTO_LIST > + ((UINT4 *, unsigned char *, unsigned int)); > ++#if 0 > + static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int)); > + static void MD5_memset PROTO_LIST ((POINTER, int, unsigned int)); > ++#endif > ++#define MD5_memcpy memcpy > ++#define MD5_memset memset > + > + static unsigned char PADDING[64] = { > + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > +@@ -317,6 +321,7 @@ unsigned int len; > + > + */ > + > ++#if 0 > + static void MD5_memcpy (output, input, len) > + POINTER output; > + POINTER input; > +@@ -341,6 +346,7 @@ unsigned int len; > + for (i = 0; i < len; i++) > + ((char *)output)[i] = (char)value; > + } > ++#endif > + > + void _saslauthd_hmac_md5_init(HMAC_MD5_CTX *hmac, > + const unsigned char *key, -- Antoine