]> git.proxmox.com Git - mirror_qemu.git/commitdiff
linux-user: Implement SOL_ALG encryption support
authorHelge Deller <deller@gmx.de>
Mon, 12 Dec 2022 17:34:15 +0000 (18:34 +0100)
committerLaurent Vivier <laurent@vivier.eu>
Fri, 3 Feb 2023 21:55:12 +0000 (22:55 +0100)
Add suport to handle SOL_ALG packets via sendmsg() and recvmsg().
This allows emulated userspace to use encryption functionality.

Tested with the debian ell package with hppa guest on x86_64 host.

Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20221212173416.90590-1-deller@gmx.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
linux-user/syscall.c

index 55d53b344b84dd7d969adb7b4561b8b01e81cd3a..a0d2beddaa4eed04dd571207ad70e29d1ae955ae 100644 (file)
@@ -1829,6 +1829,14 @@ static inline abi_long target_to_host_cmsg(struct msghdr *msgh,
             __get_user(cred->pid, &target_cred->pid);
             __get_user(cred->uid, &target_cred->uid);
             __get_user(cred->gid, &target_cred->gid);
+        } else if (cmsg->cmsg_level == SOL_ALG) {
+            uint32_t *dst = (uint32_t *)data;
+
+            memcpy(dst, target_data, len);
+            /* fix endianess of first 32-bit word */
+            if (len >= sizeof(uint32_t)) {
+                *dst = tswap32(*dst);
+            }
         } else {
             qemu_log_mask(LOG_UNIMP, "Unsupported ancillary data: %d/%d\n",
                           cmsg->cmsg_level, cmsg->cmsg_type);