What
Currently, when offering a service, the communication library opens several file descriptors without using CLOEXEC. This means those file descriptors remain open in a child process which was spawned using fork() and execve().
In lifecycle, we want to spawn new processes and have them connect back to a service which the parent process is providing.
We do not want to leak the existing file descriptors from the parent into the child, as this presumably would be insecure.
How
Set CLOEXEC on all file descriptors when they are opened.
Alternatively, provide a guaranteed async signal safe method for removing a service offer, which we could call after fork(). (All code between fork() and execve() must be async signal safe.)
Estimates for realization
No response
Category
Requirements / Architecture
What
Currently, when offering a service, the communication library opens several file descriptors without using
CLOEXEC. This means those file descriptors remain open in a child process which was spawned usingfork()andexecve().In lifecycle, we want to spawn new processes and have them connect back to a service which the parent process is providing.
We do not want to leak the existing file descriptors from the parent into the child, as this presumably would be insecure.
How
Set
CLOEXECon all file descriptors when they are opened.Alternatively, provide a guaranteed async signal safe method for removing a service offer, which we could call after
fork(). (All code betweenfork()andexecve()must be async signal safe.)Estimates for realization
No response
Category
Requirements / Architecture