On Fri, 2024-06-21 at 17:16 +0100, Andrew Cooper wrote: > `xl devd` has been observed leaking /var/log/xldevd.log into > children. > > Note this is specifically safe; dup2() leaves O_CLOEXEC disabled on > newfd, so > after setting up stdout/stderr, it's only the logfile fd which will > close on > exec(). > > Link: https://github.com/QubesOS/qubes-issues/issues/8292 > Reported-by: Demi Marie Obenour <d...@invisiblethingslab.com> > Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com> Release-Acked-by: Oleksii Kurochko <oleksii.kuroc...@gmail.com>
~ Oleksii > --- > CC: Anthony PERARD <anth...@xenproject.org> > CC: Juergen Gross <jgr...@suse.com> > CC: Demi Marie Obenour <d...@invisiblethingslab.com> > CC: Marek Marczykowski-Górecki <marma...@invisiblethingslab.com> > CC: Oleksii Kurochko <oleksii.kuroc...@gmail.com> > > Also entirely speculative based on the QubesOS ticket. > > v2: > * Extend the commit message to explain why stdout/stderr aren't > closed by > this change > > For 4.19. This bugfix was posted earlier, but fell between the > cracks. > --- > tools/xl/xl_utils.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/xl/xl_utils.c b/tools/xl/xl_utils.c > index 17489d182954..060186db3a59 100644 > --- a/tools/xl/xl_utils.c > +++ b/tools/xl/xl_utils.c > @@ -270,7 +270,7 @@ int do_daemonize(const char *name, const char > *pidfile) > exit(-1); > } > > - CHK_SYSCALL(logfile = open(fullname, O_WRONLY|O_CREAT|O_APPEND, > 0644)); > + CHK_SYSCALL(logfile = open(fullname, O_WRONLY | O_CREAT | > O_APPEND | O_CLOEXEC, 0644)); > free(fullname); > assert(logfile >= 3); >