From b2b887cf43a21c41487fd7c24226c1947a72aa75 Mon Sep 17 00:00:00 2001 From: Jonathan Anderson Date: Tue, 11 Oct 2022 12:22:32 -0230 Subject: [PATCH] Fix crash due to out-of-order frees. (#7208) * Fix crash due to out-of-order frees. Don't free the kdbDescr until we've freed the names it contains. This fixes a SIGBUS crash on FreeBSD (and maybe other platforms too?) when pressing special keys (e.g., the Windows key) on a client. * Update ChangeLog Co-authored-by: Serhii Hadzhilov --- ChangeLog | 3 +++ src/lib/synergy/unix/AppUtilUnix.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 6e2e1af39f..bb438e62c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,9 @@ 1.14.6 ====== +Bug fixes: +- #7208 Fix crash on FreeBSD when pressing special keys on a client. + Enhancements: - #7222 Ability to initiate non-TLS connection from server - #7225 Ability to initiate TLS connection from server diff --git a/src/lib/synergy/unix/AppUtilUnix.cpp b/src/lib/synergy/unix/AppUtilUnix.cpp index 14e8ef3785..627e970e11 100644 --- a/src/lib/synergy/unix/AppUtilUnix.cpp +++ b/src/lib/synergy/unix/AppUtilUnix.cpp @@ -148,8 +148,8 @@ AppUtilUnix::getCurrentLanguageCode() groupStartI = strI + 1; } - XFree(kbdDescr); XkbFreeNames(kbdDescr, XkbSymbolsNameMask, true); + XFree(kbdDescr); XCloseDisplay(display); result = X11LayoutsParser::convertLayotToISO("/usr/share/X11/xkb/rules/evdev.xml", result);