Bug#1110112: unblock: procps/2:4.0.4-9
On Wed, Jul 30, 2025 at 10:01:44PM +1000, Craig Small wrote:
> I have uploaded 4.0.4-9 thanks for your work on this.
Excellent! I attach the new debdiff for RT - it differs only in version
number, and changelog.
diff -Nru procps-4.0.4/debian/changelog procps-4.0.4/debian/changelog
--- procps-4.0.4/debian/changelog 2025-04-14 09:06:27.000000000 +0100
+++ procps-4.0.4/debian/changelog 2025-07-30 12:58:40.000000000 +0100
@@ -1,3 +1,14 @@
+procps (2:4.0.4-9) unstable; urgency=medium
+
+ [ Craig Small ]
+ * d/changelog: Fix number for skill bug
+
+ [ Andrew Bower ]
+ * Initialise sessions variable in w. (Closes: #1108549)
+ * d/patches: get sessions even if !sd_booted()
+
+ -- Craig Small <csmall@debian.org> Wed, 30 Jul 2025 21:58:40 +1000
+
procps (2:4.0.4-8) unstable; urgency=medium
* Port 4.0.5 patches:
@@ -6,7 +17,7 @@
- library: Use clock_gettime for pids API Closes: #842879
- kill: Correctly parse negative pids
- sysctl: Don't read some keys Closes: #978688
- - skill: Fix lonesome : in help Closes: #1086441
+ - skill: Fix lonesome : in help Closes: #1086641
- sysctl.conf.5 Note changes with systemd Closes: #1077187
- vmstat.8: si/so are changed by --unit Closes: #1061944
- w: Don't crash with short option Closes: #1054345
diff -Nru procps-4.0.4/debian/patches/series procps-4.0.4/debian/patches/series
--- procps-4.0.4/debian/patches/series 2025-04-14 09:06:27.000000000 +0100
+++ procps-4.0.4/debian/patches/series 2025-07-30 12:58:40.000000000 +0100
@@ -21,3 +21,4 @@
library_lxc_leak
sysctl_conf5_update
library_use_clock_gettime
+w_sessions_without_sd
diff -Nru procps-4.0.4/debian/patches/w_sessions_without_sd procps-4.0.4/debian/patches/w_sessions_without_sd
--- procps-4.0.4/debian/patches/w_sessions_without_sd 1970-01-01 01:00:00.000000000 +0100
+++ procps-4.0.4/debian/patches/w_sessions_without_sd 2025-07-30 12:58:40.000000000 +0100
@@ -0,0 +1,66 @@
+From: Andrew Bower <andrew@bower.uk>
+Date: Sun, 27 Jul 2025 22:14:43 +0100
+Bug-Debian: https://bugs.debian.org/1108549
+Subject: w: Get sessions even if !sd_booted()
+
+Use sd_get_sessions() to determine whether systemd-style session recording is
+in use rather than checking for sd_booted(), but only fall back to reading utmp
+if !sd_booted(). This allows sessions to be listed that have been recorded by
+elogind.
+
+---
+ src/w.c | 18 +++++++-----------
+ 1 file changed, 7 insertions(+), 11 deletions(-)
+
+diff --git a/src/w.c b/src/w.c
+index 01652ac..26805ef 100644
+--- a/src/w.c
++++ b/src/w.c
+@@ -964,6 +964,8 @@ void print_user_terminals(
+ int main(int argc, char **argv)
+ {
+ char *match_user = NULL, *p;
++ char **sessions_list;
++ int sessions;
+ utmp_t *u;
+ struct winsize win;
+ int ch;
+@@ -1113,16 +1115,11 @@ int main(int argc, char **argv)
+
+ if (term_mode) {
+ print_user_terminals(longform, maxcmd, from, userlen, fromlen, ip_addresses, pids, info, pids_cache);
+- } else {
+ #if (defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)) && defined(HAVE_SD_SESSION_GET_LEADER)
+- char **sessions_list;
+- int sessions = 0;
+- if (sd_booted() > 0)
+- sessions = sd_get_sessions (&sessions_list);
+- if (sessions < 0 && sessions != -ENOENT)
++ } else if ((sessions = sd_get_sessions (&sessions_list))
++ < 0 && sessions != -ENOENT) {
+ error(EXIT_FAILURE, -sessions, _("error getting sessions"));
+- if (sessions > 0) {
+- //int i;
++ } else if (sessions > 0) {
+ for (int i = 0; i < sessions; i++) {
+ char *class, *name;
+ int r;
+@@ -1146,6 +1143,8 @@ int main(int argc, char **argv)
+ free(sessions_list[i]);
+ }
+ free(sessions_list);
++ } else if (!sd_booted()) {
++#else
+ } else {
+ #endif
+ #ifdef HAVE_UTMPX_H
+@@ -1175,9 +1174,6 @@ int main(int argc, char **argv)
+ endutxent();
+ #else
+ endutent();
+-#endif
+-#if (defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)) && defined(HAVE_SD_SESSION_GET_LEADER)
+- }
+ #endif
+ }
+
diff -Nru procps-4.0.4/debian/patches/w_terminal_mode procps-4.0.4/debian/patches/w_terminal_mode
--- procps-4.0.4/debian/patches/w_terminal_mode 2025-04-14 09:06:27.000000000 +0100
+++ procps-4.0.4/debian/patches/w_terminal_mode 2025-07-30 12:58:40.000000000 +0100
@@ -20,10 +20,13 @@
* From/IP won't work for utmp systems
.
This patch includes the upstreams original commit and the enhancement.
+ .
+ Updated 2025-07-23 to avoid acting on the value of uninitialized sessions
+ variable.
Author: Craig Small <csmall@dropbear.xyz>
Origin: upstream, https://gitlab.com/procps-ng/procps/-/commit/f53cc24d57085c87ebb1871b92c0069b72a60926
Applied-Upstream: 4.0.6
-Last-Update: 2025-04-14
+Last-Update: 2025-07-23
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/man/w.1
@@ -485,7 +488,7 @@
+ } else {
+#if (defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)) && defined(HAVE_SD_SESSION_GET_LEADER)
+ char **sessions_list;
-+ int sessions;
++ int sessions = 0;
+ if (sd_booted() > 0)
sessions = sd_get_sessions (&sessions_list);
- if (sessions < 0 && sessions != -ENOENT)
Reply to: