diff --git a/net/samba416/Makefile b/net/samba416/Makefile --- a/net/samba416/Makefile +++ b/net/samba416/Makefile @@ -539,6 +539,11 @@ . endif .endif +# Patch for PR #275597 +.if ${ARCH} == "i386" +EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-source3_modules_vfs__cap.c +.endif + .if ${PORT_OPTIONS:MGSSAPI_MIT} PLIST_FILES+= ${SAMBA4_MODULEDIR}/krb5/winbind_krb5_localauth.so \ man/man8/winbind_krb5_localauth.8.gz diff --git a/net/samba416/files/extra-patch-source3_modules_vfs__cap.c b/net/samba416/files/extra-patch-source3_modules_vfs__cap.c new file mode 100644 --- /dev/null +++ b/net/samba416/files/extra-patch-source3_modules_vfs__cap.c @@ -0,0 +1,20 @@ +--- source3/modules/vfs_cap.c.orig 2023-12-24 13:35:22 UTC ++++ source3/modules/vfs_cap.c +@@ -112,7 +112,16 @@ static struct dirent *cap_readdir(vfs_handle_struct *h + return NULL; + } + talloc_set_name_const(newdirent, "struct dirent"); +- memcpy(newdirent, result, sizeof(struct dirent)); ++ /* See bug #275597 for an explanation of this 14.0 i386 workaround */ ++ /* memcpy(newdirent, result, sizeof(struct dirent)); */ ++ newdirent->d_pad1 = result->d_pad1 ; ++ newdirent->d_namlen = result->d_namlen ; ++ newdirent->d_pad0 = result->d_pad0 ; ++ newdirent->d_type = result->d_type ; ++ newdirent->d_reclen = result->d_reclen ; ++ newdirent->d_off = result->d_off ; ++ newdirent->d_fileno = result->d_fileno ; ++ /*******************************************************************/ + memcpy(&newdirent->d_name, newname, newnamelen); + return newdirent; + }