<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/5f87cfe5c6ca9aae8c6169b5fc3da8ff0bf339e8">https://github.com/macports/macports-ports/commit/5f87cfe5c6ca9aae8c6169b5fc3da8ff0bf339e8</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 5f87cfe5c6c KeePassXC-devel: update to latest devel & update patch
</span>5f87cfe5c6c is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 5f87cfe5c6ca9aae8c6169b5fc3da8ff0bf339e8
</span>Author: tenzap <fabstz-it@yahoo.fr>
AuthorDate: Fri Nov 11 22:36:29 2022 +0100
<span style='display:block; white-space:pre;color:#404040;'> KeePassXC-devel: update to latest devel & update patch
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Update patch to fix build on macos
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Fixes these build errors on macos 10.8
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> /src/touchid/TouchID.mm:132:5: error: unknown type name 'SecAccessControlCreateFlags'
</span><span style='display:block; white-space:pre;color:#404040;'> /src/touchid/TouchID.mm:148:4: error: use of undeclared identifier 'SecAccessControlRef'
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Fix build when built with Qt5.6 (used on macos 10.7)
</span>---
security/KeePassXC/Portfile | 13 ++-
...ouch-id.diff => add_support_for_old_macos.diff} | 130 +++++++++++++++++----
.../files/devel/add_support_for_qt5.6.diff | 38 ++++++
3 files changed, 153 insertions(+), 28 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/KeePassXC/Portfile b/security/KeePassXC/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index e56eb8329f3..05cb9bec571 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/KeePassXC/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/KeePassXC/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -64,22 +64,23 @@ if {${subport} eq ${name}} {
</span> }
} else {
# devel subport
<span style='display:block; white-space:pre;background:#ffe0e0;'>- github.setup keepassxreboot keepassxc d83743ea0b207e4a5c034af6a049ba157470e093
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ github.setup keepassxreboot keepassxc 9ba88e2f13695add13f0391badf49aedae115b6f
</span> set githash [string range ${github.version} 0 6]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- version 20221023.git${githash}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ version 20221102.git${githash}
</span> revision 0
conflicts KeePassXC
<span style='display:block; white-space:pre;background:#ffe0e0;'>- checksums rmd160 90569580342ee0acd98e05a0ffaa442ac0f99bf3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 80b279e1e173c2693bddc098036054d771fcfbc161fc34e4b59571f1ea698b4d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 11243794
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums rmd160 6b8b9a94b886e3062553b14ec1507324e7f7ec15 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 13a870d347837c6c8769dbf3f9ea9f074d0a9d039e4e7b11ac65187eb1520c66 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 11421690
</span>
gpg_verify.use_gpg_verification \
no
patchfiles-append devel/patch-no-findpackage-path.diff \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- devel/patch-touch-id.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ devel/add_support_for_old_macos.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ devel/add_support_for_qt5.6.diff
</span> }
if {[option gpg_verify.use_gpg_verification]} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/KeePassXC/files/devel/patch-touch-id.diff b/security/KeePassXC/files/devel/add_support_for_old_macos.diff
</span>similarity index 57%
rename from security/KeePassXC/files/devel/patch-touch-id.diff
rename to security/KeePassXC/files/devel/add_support_for_old_macos.diff
<span style='display:block; white-space:pre;color:#808080;'>index 41b4388b3f0..630f51c88c7 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/KeePassXC/files/devel/patch-touch-id.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/KeePassXC/files/devel/add_support_for_old_macos.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,11 +1,28 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur CMakeLists.txt CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: tenzap <fabstz-it@yahoo.fr>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 13 Nov 2022 09:38:48 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix build failure on macos versions < 10.11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This patch will permit to fix build issues on macos versions < 10.11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Strategy is to check at configure time which functions are available.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Those that are not available, are hidden by preprocessor checks
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Upstream doesn't want to merge patches to build on versions prior to macos
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+10.13, so this patch is not forwarded upstream.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See: https://github.com/keepassxreboot/keepassxc/pull/8650#issuecomment-1291750066
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> --- CMakeLists.txt
+++ CMakeLists.txt
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -81,6 +81,32 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -81,6 +81,42 @@ if(APPLE)
</span> ${CMAKE_CURRENT_BINARY_DIR}/tiometry_test/
${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_watch_support.mm)
message(STATUS "Apple watch compiler support: ${XC_APPLE_COMPILER_SUPPORT_WATCH}")
+
<span style='display:block; white-space:pre;background:#e0ffe0;'>++ try_compile(XC_APPLE_COMPILER_SUPPORT_errSecUserCanceled
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ${CMAKE_CURRENT_BINARY_DIR}/errSecUserCanceled_test/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_errSecUserCanceled_support.mm)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ message(STATUS "errSecUserCanceled compiler support: ${XC_APPLE_COMPILER_SUPPORT_errSecUserCanceled}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span> + try_compile(XC_APPLE_COMPILER_SUPPORT_LocalAuthentication
+ ${CMAKE_CURRENT_BINARY_DIR}/LocalAuthentication_test/
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_LocalAuthentication_support.mm)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -30,12 +47,39 @@ diff -Naur CMakeLists.txt CMakeLists.txt
</span> + ${CMAKE_CURRENT_BINARY_DIR}/kSecUseOperationPrompt_test/
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_kSecUseOperationPrompt_support.mm)
+ message(STATUS "kSecUseOperationPrompt compiler support: ${XC_APPLE_COMPILER_SUPPORT_kSecUseOperationPrompt}")
<span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ try_compile(XC_APPLE_COMPILER_SUPPORT_SecAccessControlRef
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ${CMAKE_CURRENT_BINARY_DIR}/SecAccessControlRef_test/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_SecAccessControlRef_support.mm)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ message(STATUS "SecAccessControlRef compiler support: ${XC_APPLE_COMPILER_SUPPORT_SecAccessControlRef}")
</span> +
endif()
if(WITH_CCACHE)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur cmake/compiler-checks/macos/control_kSecAttrAccessControl_support.mm cmake/compiler-checks/macos/control_kSecAttrAccessControl_support.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- cmake/compiler-checks/macos/control_kSecAttrAccessControl_support.mm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cmake/compiler-checks/macos/control_LocalAuthentication_support.mm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,2 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <LocalAuthentication/LocalAuthentication.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int main() { return 0; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cmake/compiler-checks/macos/control_SecAccessControlRef_support.mm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Security/Security.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int main() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ SecAccessControlRef;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cmake/compiler-checks/macos/control_errSecUserCanceled_support.mm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Security/Security.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int main() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errSecUserCanceled;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span> +++ cmake/compiler-checks/macos/control_kSecAttrAccessControl_support.mm
@@ -0,0 +1,6 @@
+#include <Security/Security.h>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -44,8 +88,7 @@ diff -Naur cmake/compiler-checks/macos/control_kSecAttrAccessControl_support.mm
</span> + kSecAttrAccessControl;
+ return 0;
+}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur cmake/compiler-checks/macos/control_kSecAttrSynchronizable_support.mm cmake/compiler-checks/macos/control_kSecAttrSynchronizable_support.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- cmake/compiler-checks/macos/control_kSecAttrSynchronizable_support.mm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span> +++ cmake/compiler-checks/macos/control_kSecAttrSynchronizable_support.mm
@@ -0,0 +1,6 @@
+#include <Security/Security.h>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -54,8 +97,7 @@ diff -Naur cmake/compiler-checks/macos/control_kSecAttrSynchronizable_support.mm
</span> + kSecAttrSynchronizable;
+ return 0;
+}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur cmake/compiler-checks/macos/control_kSecUseAuthenticationUI_support.mm cmake/compiler-checks/macos/control_kSecUseAuthenticationUI_support.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- cmake/compiler-checks/macos/control_kSecUseAuthenticationUI_support.mm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span> +++ cmake/compiler-checks/macos/control_kSecUseAuthenticationUI_support.mm
@@ -0,0 +1,6 @@
+#include <Security/Security.h>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -64,8 +106,7 @@ diff -Naur cmake/compiler-checks/macos/control_kSecUseAuthenticationUI_support.m
</span> + kSecUseAuthenticationUI;
+ return 0;
+}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur cmake/compiler-checks/macos/control_kSecUseOperationPrompt_support.mm cmake/compiler-checks/macos/control_kSecUseOperationPrompt_support.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- cmake/compiler-checks/macos/control_kSecUseOperationPrompt_support.mm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span> +++ cmake/compiler-checks/macos/control_kSecUseOperationPrompt_support.mm
@@ -0,0 +1,6 @@
+#include <Security/Security.h>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -74,37 +115,33 @@ diff -Naur cmake/compiler-checks/macos/control_kSecUseOperationPrompt_support.mm
</span> + kSecUseOperationPrompt;
+ return 0;
+}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur cmake/compiler-checks/macos/control_localAuthentication_support.mm cmake/compiler-checks/macos/control_localAuthentication_support.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- cmake/compiler-checks/macos/control_LocalAuthentication_support.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ cmake/compiler-checks/macos/control_LocalAuthentication_support.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,2 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <LocalAuthentication/LocalAuthentication.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+int main() { return 0; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur src/config-keepassx.h.cmake src/config-keepassx.h.cmake
</span> --- src/config-keepassx.h.cmake
+++ src/config-keepassx.h.cmake
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -41,10 +41,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -41,10 +41,24 @@
</span> #cmakedefine01 XC_APPLE_COMPILER_SUPPORT_BIOMETRY()
#cmakedefine01 XC_APPLE_COMPILER_SUPPORT_TOUCH_ID()
#cmakedefine01 XC_APPLE_COMPILER_SUPPORT_WATCH()
<span style='display:block; white-space:pre;background:#e0ffe0;'>++#cmakedefine01 XC_APPLE_COMPILER_SUPPORT_errSecUserCanceled()
</span> +#cmakedefine01 XC_APPLE_COMPILER_SUPPORT_LocalAuthentication()
+#cmakedefine01 XC_APPLE_COMPILER_SUPPORT_kSecAttrSynchronizable()
+#cmakedefine01 XC_APPLE_COMPILER_SUPPORT_kSecUseAuthenticationUI()
+#cmakedefine01 XC_APPLE_COMPILER_SUPPORT_kSecAttrAccessControl()
+#cmakedefine01 XC_APPLE_COMPILER_SUPPORT_kSecUseOperationPrompt()
<span style='display:block; white-space:pre;background:#e0ffe0;'>++#cmakedefine01 XC_APPLE_COMPILER_SUPPORT_SecAccessControlRef()
</span>
#define XC_COMPILER_SUPPORT(X) XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_##X()
#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_APPLE_BIOMETRY() XC_APPLE_COMPILER_SUPPORT_BIOMETRY()
#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_TOUCH_ID() XC_APPLE_COMPILER_SUPPORT_TOUCH_ID()
#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_WATCH_UNLOCK() XC_APPLE_COMPILER_SUPPORT_WATCH()
<span style='display:block; white-space:pre;background:#e0ffe0;'>++#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_errSecUserCanceled() XC_APPLE_COMPILER_SUPPORT_errSecUserCanceled()
</span> +#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_LocalAuthentication() XC_APPLE_COMPILER_SUPPORT_LocalAuthentication()
+#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_kSecAttrSynchronizable() XC_APPLE_COMPILER_SUPPORT_kSecAttrSynchronizable()
+#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_kSecUseAuthenticationUI() XC_APPLE_COMPILER_SUPPORT_kSecUseAuthenticationUI()
+#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_kSecAttrAccessControl() XC_APPLE_COMPILER_SUPPORT_kSecAttrAccessControl()
+#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_kSecUseOperationPrompt() XC_APPLE_COMPILER_SUPPORT_kSecUseOperationPrompt()
<span style='display:block; white-space:pre;background:#e0ffe0;'>++#define XC_COMPILER_SUPPORT_PRIVATE_DEFINITION_SecAccessControlRef() XC_APPLE_COMPILER_SUPPORT_SecAccessControlRef()
</span>
#endif // KEEPASSX_CONFIG_KEEPASSX_H
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur src/touchid/TouchID.mm src/touchid/TouchID.mm
</span> --- src/touchid/TouchID.mm
+++ src/touchid/TouchID.mm
@@ -9,7 +9,9 @@
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -117,7 +154,33 @@ diff -Naur src/touchid/TouchID.mm src/touchid/TouchID.mm
</span> #include <Security/Security.h>
#include <QCoreApplication>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -164,9 +166,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -131,7 +133,9 @@ bool TouchID::storeKey(const QString& databasePath, const QByteArray& passwordKe
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // We need both runtime and compile time checks here to solve the following problems:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // - Not all flags are available in all OS versions, so we have to check it at compile time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // - Requesting Biometry/TouchID when to fingerprint sensor is available will result in runtime error
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if XC_COMPILER_SUPPORT(SecAccessControlRef)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SecAccessControlCreateFlags accessControlFlags = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (isTouchIdAvailable()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if XC_COMPILER_SUPPORT(APPLE_BIOMETRY)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Prefer the non-deprecated flag when available
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -147,6 +151,7 @@ bool TouchID::storeKey(const QString& databasePath, const QByteArray& passwordKe
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if XC_COMPILER_SUPPORT(SecAccessControlRef)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SecAccessControlRef sacObject = SecAccessControlCreateWithFlags(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kCFAllocatorDefault, kSecAttrAccessibleWhenUnlockedThisDeviceOnly, accessControlFlags, &error);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -155,6 +160,7 @@ bool TouchID::storeKey(const QString& databasePath, const QByteArray& passwordKe
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ debug("TouchID::storeKey - Error creating security flags: %s", e.localizedDescription.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSString *accountName = keyName.toNSString(); // The NSString is released by Qt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -168,15 +174,23 @@ bool TouchID::storeKey(const QString& databasePath, const QByteArray& passwordKe
</span> CFDictionarySetValue(attributes, kSecClass, kSecClassGenericPassword);
CFDictionarySetValue(attributes, kSecAttrAccount, (__bridge CFStringRef) accountName);
CFDictionarySetValue(attributes, kSecValueData, (__bridge CFDataRef) keychainValueData);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -127,13 +190,21 @@ diff -Naur src/touchid/TouchID.mm src/touchid/TouchID.mm
</span> +#if XC_COMPILER_SUPPORT(kSecUseAuthenticationUI)
CFDictionarySetValue(attributes, kSecUseAuthenticationUI, kSecUseAuthenticationUIAllow);
+#endif
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if XC_COMPILER_SUPPORT(kSecAttrAccessControl)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if XC_COMPILER_SUPPORT(kSecAttrAccessControl) && XC_COMPILER_SUPPORT(SecAccessControlRef)
</span> CFDictionarySetValue(attributes, kSecAttrAccessControl, sacObject);
+#endif
// add to KeyChain
OSStatus status = SecItemAdd(attributes, NULL);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -218,7 +226,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LogStatusError("TouchID::storeKey - Status adding new entry", status);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if XC_COMPILER_SUPPORT(SecAccessControlRef)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CFRelease(sacObject);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CFRelease(attributes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (status != errSecSuccess) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -222,18 +236,23 @@ bool TouchID::getKey(const QString& databasePath, QByteArray& passwordKey) const
</span> CFDictionarySetValue(query, kSecClass, kSecClassGenericPassword);
CFDictionarySetValue(query, kSecAttrAccount, (__bridge CFStringRef) accountName);
CFDictionarySetValue(query, kSecReturnData, kCFBooleanTrue);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -143,3 +214,18 @@ diff -Naur src/touchid/TouchID.mm src/touchid/TouchID.mm
</span>
// get data from the KeyChain
CFTypeRef dataTypeRef = NULL;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ OSStatus status = SecItemCopyMatching(query, &dataTypeRef);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CFRelease(query);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if XC_COMPILER_SUPPORT(errSecUserCanceled)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (status == errSecUserCanceled) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // user canceled the authentication, return true with empty key
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ debug("TouchID::getKey - User canceled authentication");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } else if (status != errSecSuccess || dataTypeRef == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (status != errSecSuccess || dataTypeRef == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LogStatusError("TouchID::getKey - key query error", status);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/KeePassXC/files/devel/add_support_for_qt5.6.diff b/security/KeePassXC/files/devel/add_support_for_qt5.6.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..23878330aeb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/KeePassXC/files/devel/add_support_for_qt5.6.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,38 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: tenzap <fabstz-it@yahoo.fr>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 13 Nov 2022 09:38:48 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix build failure with Qt5.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+On macos 10.7 which uses Qt 5.6, build fails with this error:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+src/gui/tag/TagView.cpp:79:38: error: no matching constructor for initialization of 'QAction'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ auto action = menu.exec({new QAction(icons()->icon("trash"), tr("Remove Search"))}, mapToGlobal(pos));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is because in Qt 5.6, the 3rd argument is not optional. Starting from Qt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+5.7 the default value for the 3rd argument is nullptr, so setting it to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+nullptr.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://doc.qt.io/archives/qt-5.6/qaction.html#QAction-2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://doc.qt.io/archives/qt-5.7/qaction.html#QAction-2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Upstream doesn't want to merge patches to build on versions prior to macos
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+10.13, so this patch is not forwarded upstream.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/gui/tag/TagView.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/gui/tag/TagView.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -76,14 +76,14 @@ void TagView::contextMenuRequested(const QPoint& pos)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (type == TagModel::SAVED_SEARCH) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Allow deleting saved searches
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QMenu menu;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- auto action = menu.exec({new QAction(icons()->icon("trash"), tr("Remove Search"))}, mapToGlobal(pos));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ auto action = menu.exec({new QAction(icons()->icon("trash"), tr("Remove Search"), nullptr)}, mapToGlobal(pos));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (action) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_db->metadata()->deleteSavedSearch(index.data(Qt::DisplayRole).toString());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else if (type == TagModel::TAG) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Allow removing tags from all entries in a database
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QMenu menu;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- auto action = menu.exec({new QAction(icons()->icon("trash"), tr("Remove Tag"))}, mapToGlobal(pos));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ auto action = menu.exec({new QAction(icons()->icon("trash"), tr("Remove Tag"), nullptr)}, mapToGlobal(pos));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (action) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ auto tag = index.data(Qt::DisplayRole).toString();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ auto ans = MessageBox::question(this,
</span></pre><pre style='margin:0'>
</pre>