Here is an update to FreeRDP 3.32.0.
https://github.com/FreeRDP/FreeRDP/releases/tag/3.32.0
A lot of CVE fixed.
>From speaking with the author it seems strict alignment
archs were never officially supported in the past. He had
addded some markers all over the tree where there were
alignment issues with the code this cycle. I noticed as
git master was no longer building on OpenBSD/aarch64. I
said something and he eventually gave in and I believe
he has fixed all of the issues. So any and all testing
welcome.
I took out some of the CMake options as they're already
enabled.
Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/freerdp/Makefile,v
retrieving revision 1.84
diff -u -p -u -p -r1.84 Makefile
--- Makefile 10 Sep 2026 14:26:10 -0000 1.84
+++ Makefile 23 Sep 2026 21:39:20 -0000
@@ -1,7 +1,6 @@
COMMENT = client for Microsoft RDP (remote desktop protocol)
-DISTNAME = freerdp-3.31.1
-REVISION = 0
+DISTNAME = freerdp-3.32.0
CATEGORIES = x11 net
@@ -52,18 +51,17 @@ CONFIGURE_ARGS += \
-DUSE_VERSION_FROM_GIT_TAG=OFF \
-DUSE_GIT_FOR_REVISION=OFF \
-DBUILD_TESTING=ON \
+ -DWITH_ALSA=OFF \
-DWITH_CCACHE=OFF \
- -DWITH_CUPS=ON \
-DWITH_DIRECTFB=OFF \
-DWITH_FUSE=OFF \
-DWITH_GSTREAMER_0_10=OFF \
-DWITH_GSTREAMER_1_0=OFF \
-DWITH_KRB5=OFF \
-DWITH_OPENSLES=OFF \
- -DWITH_PCSC=ON \
-DWITH_LIBSYSTEMD=OFF \
-DWITH_OSS=OFF \
- -DWITH_SNDIO=ON
+ -DWITH_PULSE=OFF
# experimental, pulls in libpam
CONFIGURE_ARGS += -DWITH_SERVER=OFF
@@ -77,7 +75,7 @@ CONFIGURE_ARGS += -DWITH_CLIENT_SDL=OFF
# wants at least LDEP on wayland/wayland x11/xkbcommon
CONFIGURE_ARGS += -DWITH_WAYLAND=OFF
-.if ${MACHINE_ARCH} == "sparc64" || ${MACHINE_ARCH} == "i386"
+.if ${MACHINE_ARCH} == "i386"
CONFIGURE_ARGS += -DWITH_SIMD=OFF
.endif
Index: distinfo
===================================================================
RCS file: /cvs/ports/x11/freerdp/distinfo,v
retrieving revision 1.33
diff -u -p -u -p -r1.33 distinfo
--- distinfo 3 Sep 2026 12:17:41 -0000 1.33
+++ distinfo 23 Sep 2026 21:39:20 -0000
@@ -1,2 +1,2 @@
-SHA256 (freerdp-3.31.1.tar.gz) = SiYpAmiWy04m+47S1spqpKuJypVSjfuuJVDC9ryGaZE=
-SIZE (freerdp-3.31.1.tar.gz) = 11111567
+SHA256 (freerdp-3.32.0.tar.gz) = hVZF6Ib5dJpIXLZjD/6TSqcX17GM9xZpmrH8iGRjMhA=
+SIZE (freerdp-3.32.0.tar.gz) = 11264313
Index: patches/patch-channels_rdpdr_client_rdpdr_main_c
===================================================================
RCS file: patches/patch-channels_rdpdr_client_rdpdr_main_c
diff -N patches/patch-channels_rdpdr_client_rdpdr_main_c
--- patches/patch-channels_rdpdr_client_rdpdr_main_c 3 Sep 2026 12:17:41
-0000 1.9
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,23 +0,0 @@
-no hotplug on openbsd
-
-Index: channels/rdpdr/client/rdpdr_main.c
---- channels/rdpdr/client/rdpdr_main.c.orig
-+++ channels/rdpdr/client/rdpdr_main.c
-@@ -247,7 +247,7 @@ static UINT rdpdr_send_device_list_remove_request(rdpd
- return rdpdr_send(rdpdr, s);
- }
-
--#if defined(_UWP) || defined(__IOS__)
-+#if defined(_UWP) || defined(__IOS__) || defined(__OpenBSD__)
-
- static UINT handle_hotplug(WINPR_ATTR_UNUSED RdpdrClientContext* context,
- WINPR_ATTR_UNUSED RdpdrHotplugEventType type)
-@@ -1098,7 +1098,7 @@ out:
-
- #endif
-
--#if !defined(_WIN32) && !defined(__IOS__)
-+#if !defined(_WIN32) && !defined(__IOS__) && !defined(__OpenBSD__)
- /**
- * Function description
- *
Index: patches/patch-channels_rdpsnd_client_rdpsnd_main_c
===================================================================
RCS file:
/cvs/ports/x11/freerdp/patches/patch-channels_rdpsnd_client_rdpsnd_main_c,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 patch-channels_rdpsnd_client_rdpsnd_main_c
--- patches/patch-channels_rdpsnd_client_rdpsnd_main_c 12 Aug 2026 16:04:45
-0000 1.3
+++ patches/patch-channels_rdpsnd_client_rdpsnd_main_c 23 Sep 2026 21:39:20
-0000
@@ -3,7 +3,7 @@ Default /sound (without parameters) to :
Index: channels/rdpsnd/client/rdpsnd_main.c
--- channels/rdpsnd/client/rdpsnd_main.c.orig
+++ channels/rdpsnd/client/rdpsnd_main.c
-@@ -1017,7 +1017,8 @@ static UINT rdpsnd_process_addin_args(rdpsndPlugin* rd
+@@ -1040,7 +1040,8 @@ static UINT rdpsnd_process_addin_args(rdpsndPlugin* rd
}
CommandLineSwitchEnd(arg)
} while ((arg = CommandLineFindNextArgumentA(arg)) != nullptr);
Index: patches/patch-winpr_CMakeLists_txt
===================================================================
RCS file: patches/patch-winpr_CMakeLists_txt
diff -N patches/patch-winpr_CMakeLists_txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-winpr_CMakeLists_txt 23 Sep 2026 21:39:20 -0000
@@ -0,0 +1,16 @@
+- Have Libs.private entry even for a shared library
+
+Index: winpr/CMakeLists.txt
+--- winpr/CMakeLists.txt.orig
++++ winpr/CMakeLists.txt
+@@ -402,7 +402,9 @@ endif()
+ # Do not set Requires.Private if not a static build
+ if(BUILD_SHARED_LIBS)
+ set(WINPR_PC_REQUIRES_PRIVATE "")
+- set(WINPR_PC_LIBRARY_PRIVATE "")
++ if(NOT OPENBSD)
++ set(WINPR_PC_LIBRARY_PRIVATE "")
++ endif()
+ endif()
+
+ if(WITH_WINPR_TOOLS)
Index: patches/patch-winpr_libwinpr_library_CMakeLists_txt
===================================================================
RCS file: patches/patch-winpr_libwinpr_library_CMakeLists_txt
diff -N patches/patch-winpr_libwinpr_library_CMakeLists_txt
--- patches/patch-winpr_libwinpr_library_CMakeLists_txt 12 Aug 2026 16:04:45
-0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-Index: winpr/libwinpr/library/CMakeLists.txt
---- winpr/libwinpr/library/CMakeLists.txt.orig
-+++ winpr/libwinpr/library/CMakeLists.txt
-@@ -17,6 +17,6 @@
-
- winpr_module_add(library.c)
-
--if(BUILD_TESTING_INTERNAL OR BUILD_TESTING)
-+if(BUILD_TESTING_INTERNAL OR BUILD_TESTING) # AND NOT OPENBSD -- no
getexepath() yet
- add_subdirectory(test)
- endif()
Index: patches/patch-winpr_libwinpr_library_library_c
===================================================================
RCS file: patches/patch-winpr_libwinpr_library_library_c
diff -N patches/patch-winpr_libwinpr_library_library_c
--- patches/patch-winpr_libwinpr_library_library_c 10 Sep 2026 14:26:10
-0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,38 +0,0 @@
-- [winpr,library] implement GetModuleFileNameA on OpenBSD with getexecpath()
-
-Index: winpr/libwinpr/library/library.c
---- winpr/libwinpr/library/library.c.orig
-+++ winpr/libwinpr/library/library.c
-@@ -349,6 +349,32 @@ DWORD GetModuleFileNameA(HMODULE hModule, LPSTR lpFile
- return module_from_proc("/proc/curproc/exe", lpFilename, nSize);
- #elif defined(__DragonFly__)
- return module_from_proc("/proc/curproc/file", lpFilename, nSize);
-+#elif defined(__OpenBSD__)
-+ char path[PATH_MAX] = WINPR_C_ARRAY_INIT;
-+ const int status = getexecpath(path, sizeof(path));
-+
-+ if (status != 0)
-+ {
-+ SetLastError(ERROR_INTERNAL_ERROR);
-+ return 0;
-+ }
-+
-+ const size_t length = strlen(path);
-+
-+ if (length < nSize)
-+ {
-+ CopyMemory(lpFilename, path, length + 1);
-+ return (DWORD)length;
-+ }
-+
-+ if (nSize > 0)
-+ {
-+ CopyMemory(lpFilename, path, nSize - 1);
-+ lpFilename[nSize - 1] = '\0';
-+ }
-+
-+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
-+ return nSize;
- #elif defined(__MACOSX__)
- char path[4096] = WINPR_C_ARRAY_INIT;
- char buffer[4096] = WINPR_C_ARRAY_INIT;
Index: patches/patch-winpr_winpr_pc_in
===================================================================
RCS file: patches/patch-winpr_winpr_pc_in
diff -N patches/patch-winpr_winpr_pc_in
--- patches/patch-winpr_winpr_pc_in 12 Aug 2026 16:04:45 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,10 +0,0 @@
-Index: winpr/winpr.pc.in
---- winpr/winpr.pc.in.orig
-+++ winpr/winpr.pc.in
-@@ -11,5 +11,5 @@ Version: @WINPR_VERSION@
- Requires:
- Requires.private: @WINPR_PC_REQUIRES_PRIVATE@
- Libs: -L${libdir} ${libs}
--Libs.private: @WINPR_PC_LIBRARY_PRIVATE@
-+Libs.private: -lm -lpthread
- Cflags: -I${includedir}
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/x11/freerdp/pkg/PLIST,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 PLIST
--- pkg/PLIST 3 Sep 2026 12:17:41 -0000 1.16
+++ pkg/PLIST 23 Sep 2026 21:39:20 -0000
@@ -46,6 +46,7 @@ include/freerdp3/freerdp/channels/video.
include/freerdp3/freerdp/channels/wtsvc.h
include/freerdp3/freerdp/client/
include/freerdp3/freerdp/client.h
+include/freerdp3/freerdp/client/aad_helper.h
include/freerdp3/freerdp/client/ainput.h
include/freerdp3/freerdp/client/audin.h
include/freerdp3/freerdp/client/channels.h
@@ -317,4 +318,5 @@ lib/pkgconfig/winpr3.pc
@man man/man1/winpr-hash.1
@man man/man1/winpr-makecert.1
@man man/man1/xfreerdp.1
+@man man/man7/freerdp.7
@man man/man7/wlog.7