From baec9e2d2d2b8a082ff3ebd1ac621f6d96eaf94d Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Fri, 23 Jul 2021 08:21:10 -0700 Subject: [PATCH] Kernel: Migrate sys$unveil to use the KString API This avoids potential unhandled OOM that's possible with the old copy_string_from_user API. --- Kernel/Syscalls/unveil.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Kernel/Syscalls/unveil.cpp b/Kernel/Syscalls/unveil.cpp index 8d0d498f5e..7c7bfb7b95 100644 --- a/Kernel/Syscalls/unveil.cpp +++ b/Kernel/Syscalls/unveil.cpp @@ -53,13 +53,17 @@ KResultOr Process::sys$unveil(Userspace permissions; + { + auto permissions_or_error = try_copy_kstring_from_user(params.permissions); + if (permissions_or_error.is_error()) + return permissions_or_error.error(); + permissions = permissions_or_error.release_value(); + } // Let's work out permissions first... unsigned new_permissions = 0; - for (const char permission : permissions) { + for (const char permission : permissions->view()) { switch (permission) { case 'r': new_permissions |= UnveilAccess::Read;