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; }