From d1839ae0c922c872c8dc436071c9c85e8caf71e9 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 12 Jan 2020 12:14:08 +0100 Subject: [PATCH] Kernel: Clearing promises with pledge("") should fail Thanks Sergey for catching this brain-fart. :^) --- Kernel/Process.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index d661df64f1..82eeff099e 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -4417,7 +4417,7 @@ int Process::sys$pledge(const Syscall::SC_pledge_params* user_params) u32 new_promises = 0; if (!parse_pledge(promises, new_promises)) return -EINVAL; - if (m_promises && new_promises & ~m_promises) + if (m_promises && (!new_promises || new_promises & ~m_promises)) return -EPERM; m_promises = new_promises; } @@ -4426,7 +4426,7 @@ int Process::sys$pledge(const Syscall::SC_pledge_params* user_params) u32 new_execpromises = 0; if (!parse_pledge(execpromises, new_execpromises)) return -EINVAL; - if (m_execpromises && new_execpromises & ~m_execpromises) + if (m_execpromises && (!new_execpromises || new_execpromises & ~m_execpromises)) return -EPERM; m_execpromises = new_execpromises; }