pidfd-util: open an internal pidfd if none is passed in pidfd_check_pidfs()

I'd like to introduce a libsystemd helper for acquiring pidfd
inode id, which however means the fd passed to pidfd_check_pidfs()
can no longer be trusted. Let's add back the logic of allocating
a genuine pidfd allocated internally, which was remove in
5dc9d5b4ea.
This commit is contained in:
Mike Yuan
2025-06-01 08:55:50 +02:00
parent dbb28f7b24
commit e09b7ced65

View File

@@ -26,6 +26,15 @@ static int pidfd_check_pidfs(int pid_fd) {
if (have_pidfs >= 0)
return have_pidfs;
_cleanup_close_ int our_fd = -EBADF;
if (pid_fd < 0) {
our_fd = pidfd_open(getpid_cached(), /* flags = */ 0);
if (our_fd < 0)
return -errno;
pid_fd = our_fd;
}
return (have_pidfs = fd_is_fs_type(pid_fd, PID_FS_MAGIC));
}