From 55c722096da724ba93f0a2c5e1f4cb1f59cf9f0e Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 26 Dec 2018 21:04:27 +0100 Subject: [PATCH] Process::create_user_process() shouldn't leak a process if exec() fails. --- Kernel/Process.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index c41cce5f84..3d7cc43521 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -489,8 +489,10 @@ Process* Process::create_user_process(const String& path, uid_t uid, gid_t gid, auto* process = new Process(parts.takeLast(), uid, gid, parent_pid, Ring3, move(cwd), nullptr, tty); error = process->exec(path, move(arguments), move(environment)); - if (error != 0) + if (error != 0) { + delete process; return nullptr; + } ProcFS::the().add_process(*process);