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).

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,

Reply via email to