Projects
Mega:23.03
systemd
_service:tar_scm:backport-Get-rid-of-dangling-s...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-Get-rid-of-dangling-setutxent.patch of Package systemd
From 540389a690b1d6cb00620d8ad6f54077a90e15f8 Mon Sep 17 00:00:00 2001 From: MertsA <mertsa@fb.com> Date: Tue, 10 Aug 2021 20:54:50 -0700 Subject: [PATCH] Get rid of dangling setutxent() utmp_wall() and utmp_put_dead_process() called setutxent() directly instead of the stub in utmp-wtmp.h and never called endutxent(). This would leave /run/utmp left open by PID 1 or journald. This can be reproduced by e.g. lsof /run/utmp and systemd-cat -p 0 echo test. For utmp_put_dead_process() it would only leave it open if it returned early before calling write_utmp_wtmp() (cherry picked from commit bbd239f67a683fe63ee3698896fa503ff25031ed) Conflict:NA Reference:https://github.com/systemd/systemd/commit/540389a690b1d6cb00620d8ad6f54077a90e15f8 --- src/shared/utmp-wtmp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c index 3eeee24693..784aad2943 100644 --- a/src/shared/utmp-wtmp.c +++ b/src/shared/utmp-wtmp.c @@ -215,13 +215,14 @@ int utmp_put_init_process(const char *id, pid_t pid, pid_t sid, const char *line } int utmp_put_dead_process(const char *id, pid_t pid, int code, int status) { + _cleanup_(utxent_cleanup) bool utmpx = false; struct utmpx lookup = { .ut_type = INIT_PROCESS /* looks for DEAD_PROCESS, LOGIN_PROCESS, USER_PROCESS, too */ }, store, store_wtmp, *found; assert(id); - setutxent(); + utmpx = utxent_start(); /* Copy the whole string if it fits, or just the suffix without the terminating NUL. */ copy_suffix(store.ut_id, sizeof(store.ut_id), id); @@ -339,6 +340,7 @@ int utmp_wall( bool (*match_tty)(const char *tty, void *userdata), void *userdata) { + _cleanup_(utxent_cleanup) bool utmpx = false; _cleanup_free_ char *text = NULL, *hn = NULL, *un = NULL, *stdin_tty = NULL; char date[FORMAT_TIMESTAMP_MAX]; struct utmpx *u; @@ -368,7 +370,7 @@ int utmp_wall( message) < 0) return -ENOMEM; - setutxent(); + utmpx = utxent_start(); r = 0; -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2