about summary refs log tree commit diff
path: root/pkgs/applications/virtualization
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2024-05-17 10:01:12 +0200
committerAlyssa Ross <hi@alyssa.is>2024-05-22 18:26:30 +0200
commit19e14ba4c18dc5918ea2d5d06ed9557138dbf509 (patch)
tree732ec69e7021fe5a15f18e3469ecec5209fa8459 /pkgs/applications/virtualization
parentbefe8bbe40ab33ab235f0f95ab5298974a89dde3 (diff)
canokey-qemu: fix build on x86_64-darwin
Diffstat (limited to 'pkgs/applications/virtualization')
-rw-r--r--pkgs/applications/virtualization/qemu/canokey-qemu-memcpy.patch41
-rw-r--r--pkgs/applications/virtualization/qemu/canokey-qemu.nix4
2 files changed, 45 insertions, 0 deletions
diff --git a/pkgs/applications/virtualization/qemu/canokey-qemu-memcpy.patch b/pkgs/applications/virtualization/qemu/canokey-qemu-memcpy.patch
new file mode 100644
index 0000000000000..578c687f54cff
--- /dev/null
+++ b/pkgs/applications/virtualization/qemu/canokey-qemu-memcpy.patch
@@ -0,0 +1,41 @@
+From 9e59480d941c40b868ebafa5138bbc71ca87f08e Mon Sep 17 00:00:00 2001
+From: Alyssa Ross <hi@alyssa.is>
+Date: Sat, 18 May 2024 09:55:17 +0200
+Subject: [PATCH] Fix build where memcpy is a macro
+
+I got the following compiler error with Clang 16 building for
+x86_64-apple-darwin:
+
+	/tmp/nix-build-canokey-qemu-0-unstable-2023-06-06.drv-0/source/canokey-core/applets/oath/oath.c:44:50: error: too many arguments provided to function-like macro invocation
+	  memcpy(RDATA, (uint8_t[]){OATH_TAG_VERSION, 3, 0x05, 0x05, 0x05, OATH_TAG_NAME, HANDLE_LEN}, 7);
+	                                                 ^
+	/nix/store/vw8y07yai2pjv02s1piw3r5cyhmjbddf-Libsystem-1238.60.2/include/secure/_string.h:64:9: note: macro 'memcpy' defined here
+	#define memcpy(dest, src, len)                                  \
+	        ^
+	/tmp/nix-build-canokey-qemu-0-unstable-2023-06-06.drv-0/source/canokey-core/applets/oath/oath.c:44:3: note: parentheses are required around macro argument containing braced initializer list
+	  memcpy(RDATA, (uint8_t[]){OATH_TAG_VERSION, 3, 0x05, 0x05, 0x05, OATH_TAG_NAME, HANDLE_LEN}, 7);
+	  ^
+	                (                                                                            )
+	1 error generated.
+
+Link: https://github.com/canokeys/canokey-core/pull/85
+---
+ canokey-core/applets/oath/oath.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/canokey-core/applets/oath/oath.c b/canokey-core/applets/oath/oath.c
+index bd8361a..2d2c0ef 100644
+--- a/canokey-core/applets/oath/oath.c
++++ b/canokey-core/applets/oath/oath.c
+@@ -41,7 +41,7 @@ int oath_install(uint8_t reset) {
+ static int oath_select(const CAPDU *capdu, RAPDU *rapdu) {
+   if (P2 != 0x00) EXCEPT(SW_WRONG_P1P2);
+ 
+-  memcpy(RDATA, (uint8_t[]){OATH_TAG_VERSION, 3, 0x05, 0x05, 0x05, OATH_TAG_NAME, HANDLE_LEN}, 7);
++  memcpy(RDATA, ((uint8_t[]){OATH_TAG_VERSION, 3, 0x05, 0x05, 0x05, OATH_TAG_NAME, HANDLE_LEN}), 7);
+   if (read_attr(OATH_FILE, ATTR_HANDLE, RDATA + 7, HANDLE_LEN) < 0) return -1;
+   LL = 7 + HANDLE_LEN;
+ 
+-- 
+2.44.0
+
diff --git a/pkgs/applications/virtualization/qemu/canokey-qemu.nix b/pkgs/applications/virtualization/qemu/canokey-qemu.nix
index e98415b188f3b..b94ba0c1adbe4 100644
--- a/pkgs/applications/virtualization/qemu/canokey-qemu.nix
+++ b/pkgs/applications/virtualization/qemu/canokey-qemu.nix
@@ -18,6 +18,10 @@ stdenv.mkDerivation rec {
     hash = "sha256-4V/2UOgGWgL+tFJO/k90bCDjWSVyIpxw3nYi9NU/OxA=";
   };
 
+  patches = [
+    ./canokey-qemu-memcpy.patch
+  ];
+
   postPatch = ''
     substituteInPlace canokey-core/CMakeLists.txt \
       --replace "COMMAND git describe --always --tags --long --abbrev=8 --dirty >>" "COMMAND echo '$rev' >>"