>From 00332bf89e656f96510b6282dcc1b96a4154f3bb Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 27 May 2020 19:43:23 +0200 Subject: [PATCH 07/18] get_progname_of: Make more robust in multithreaded applications. * lib/get_progname_of.c (get_progname_of): Pass an O_CLOEXEC flag to open(). * modules/get_progname_of (Depends-on): Add 'open'. --- ChangeLog | 7 +++++++ lib/get_progname_of.c | 8 ++++---- modules/get_progname_of | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index fec6b52..259fa85 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2020-05-27 Bruno Haible + get_progname_of: Make more robust in multithreaded applications. + * lib/get_progname_of.c (get_progname_of): Pass an O_CLOEXEC flag to + open(). + * modules/get_progname_of (Depends-on): Add 'open'. + +2020-05-27 Bruno Haible + get_ppid_of: Make more robust in multithreaded applications. * lib/get_ppid_of.c (get_ppid_of): Pass an O_CLOEXEC flag to open(). * modules/get_ppid_of (Depends-on): Add 'open'. diff --git a/lib/get_progname_of.c b/lib/get_progname_of.c index 59f1e0e..4b08489 100644 --- a/lib/get_progname_of.c +++ b/lib/get_progname_of.c @@ -105,7 +105,7 @@ get_progname_of (pid_t pid) int fd; sprintf (filename, "/proc/%u/cmdline", (unsigned int) pid); - fd = open (filename, O_RDONLY); + fd = open (filename, O_RDONLY | O_CLOEXEC); if (fd >= 0) { char buf[4096 + 1]; @@ -158,7 +158,7 @@ get_progname_of (pid_t pid) int fd; sprintf (filename, "/proc/%u/psinfo", (unsigned int) pid); - fd = open (filename, O_RDONLY); + fd = open (filename, O_RDONLY | O_CLOEXEC); if (fd >= 0) { char buf[4096 + 1]; @@ -223,7 +223,7 @@ get_progname_of (pid_t pid) int fd; sprintf (filename, "/proc/%u/psinfo", (unsigned int) pid); - fd = open (filename, O_RDONLY); + fd = open (filename, O_RDONLY | O_CLOEXEC); if (fd >= 0) { /* The contents is a 'struct psinfo'. But since 'struct psinfo' @@ -378,7 +378,7 @@ get_progname_of (pid_t pid) int fd; sprintf (filename, "/proc/pinfo/%u", pid); - fd = open (filename, O_RDONLY); + fd = open (filename, O_RDONLY | O_CLOEXEC); if (0 <= fd) { prpsinfo_t buf; diff --git a/modules/get_progname_of b/modules/get_progname_of index 012cc59..51cef7e 100644 --- a/modules/get_progname_of +++ b/modules/get_progname_of @@ -8,6 +8,7 @@ lib/get_progname_of.c Depends-on: extensions unistd +open configure.ac: -- 2.7.4