From 93ce8fc985efb9bad73de3c582bb8347d997b1a7 Mon Sep 17 00:00:00 2001 From: Hendiadyoin1 Date: Thu, 26 Aug 2021 15:57:59 +0200 Subject: [PATCH] UserspaceEmulator: Handle SO_ERROR in getsockopt This makes GUI applications work again --- .../DevTools/UserspaceEmulator/Emulator_syscalls.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Userland/DevTools/UserspaceEmulator/Emulator_syscalls.cpp b/Userland/DevTools/UserspaceEmulator/Emulator_syscalls.cpp index 682a823347..dece7199bc 100644 --- a/Userland/DevTools/UserspaceEmulator/Emulator_syscalls.cpp +++ b/Userland/DevTools/UserspaceEmulator/Emulator_syscalls.cpp @@ -709,7 +709,18 @@ int Emulator::virt$getsockopt(FlatPtr params_addr) mmu().copy_to_vm((FlatPtr)params.value, &creds, sizeof(creds)); return rc; } + if (params.option == SO_ERROR) { + int so_error; + socklen_t so_error_len = sizeof(so_error); + int rc = getsockopt(params.sockfd, params.level, SO_ERROR, &so_error, &so_error_len); + if (rc < 0) + return -errno; + // FIXME: Check params.value_size + mmu().copy_to_vm((FlatPtr)params.value, &so_error, sizeof(so_error)); + return rc; + } + dbgln("Not implemented socket param: {}", params.option); TODO(); }