mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-02-03 21:50:28 +01:00
dbus-spawn-unix: If a fd is not close-on-exec, look it up in /proc/self/fd
In operating systems where /proc/self/fd works like it does on Linux (Linux itself, and FreeBSD with Linux /proc emulation) this will give us a clue about the fd that was leaked or opened incorrectly. Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
parent
cdcf3c04dd
commit
ebf487ef03
1 changed files with 16 additions and 1 deletions
|
|
@ -1063,7 +1063,22 @@ do_exec (int child_err_report_fd,
|
|||
retval = fcntl (i, F_GETFD);
|
||||
|
||||
if (retval != -1 && !(retval & FD_CLOEXEC))
|
||||
_dbus_warn ("Fd %d did not have the close-on-exec flag set!", i);
|
||||
{
|
||||
char description[256] = { 0 };
|
||||
char proc_self_fd[256] = { 0 };
|
||||
size_t description_length = sizeof (description) - 1;
|
||||
|
||||
snprintf (proc_self_fd, sizeof (proc_self_fd) - 1,
|
||||
"/proc/self/fd/%d", i);
|
||||
proc_self_fd[sizeof (proc_self_fd) - 1] = '\0';
|
||||
|
||||
if (readlink (proc_self_fd, description, description_length) <= 0)
|
||||
snprintf (description, sizeof (description) - 1, "(unknown)");
|
||||
|
||||
description[sizeof (description) - 1] = '\0';
|
||||
_dbus_warn ("Fd %d \"%s\" did not have the close-on-exec flag set!",
|
||||
i, description);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue