1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 05:58:11 +00:00

Kernel: Update process promise states on execve() and fork()

We now move the execpromises state into the regular promises, and clear
the execpromises state.

Also make sure to duplicate the promise state on fork.

This fixes an issue where "su" would launch a shell which immediately
crashed due to not having pledged "stdio".
This commit is contained in:
Andreas Kling 2021-01-26 15:25:18 +01:00
parent 1e25d2b734
commit c7858622ec
4 changed files with 10 additions and 1 deletions

View file

@ -43,6 +43,8 @@ pid_t Process::sys$fork(RegisterState& regs)
child->m_root_directory_relative_to_global_root = m_root_directory_relative_to_global_root;
child->m_promises = m_promises;
child->m_execpromises = m_execpromises;
child->m_has_promises = m_has_promises;
child->m_has_execpromises = m_has_execpromises;
child->m_veil_state = m_veil_state;
child->m_unveiled_paths = m_unveiled_paths.deep_copy();
child->m_fds = m_fds;