Control: tags -1 moreinfo On 2023-02-13 10:32:12 +0100, Chris Hofstaedtler wrote: > Package: release.debian.org > Severity: normal > User: [email protected] > Usertags: unblock > > Please unblock package util-linux, to fix a bug in logger(1). > > [ Reason ] > Bug #1030285 reports that logger(1) does not update the syslog header > information for each line received on stdin. A similar report went > upstream a longer time ago and upstream fixed this, but did not make a > release yet. > > [ Impact ] > logger(1) would report incorrect timestamps for common `stuff | logger` > usecases. > > [ Tests ] > Manual test succeeded. > > [ Risks ] > Patch is from upstream and can be trivially tested. > > [ Checklist ] > [x] all changes are documented in the d/changelog > [x] I reviewed all changes and I approve them > [x] attach debdiff against the package in testing > > As the debdiff will be a diff of a diff, here is the "first layer of > diff": > https://salsa.debian.org/debian/util-linux/-/commit/82443e63149b2da9a4b226e01fa07429955ea052#c428a8aed70931706a24001ebaee2aaa216085e2 > > unblock util-linux/2.38.1-5
That version is not in the archive. In case you wanted to ask for pre-approval, please go ahead. Cheers > diff -Nru util-linux-2.38.1/debian/changelog > util-linux-2.38.1/debian/changelog > --- util-linux-2.38.1/debian/changelog 2022-11-25 15:19:08.000000000 > +0000 > +++ util-linux-2.38.1/debian/changelog 2023-02-13 08:48:21.000000000 > +0000 > @@ -1,3 +1,9 @@ > +util-linux (2.38.1-5) unstable; urgency=medium > + > + * Apply upstream patch to fix logger timestamp for stdin (Closes: #1030285) > + > + -- Chris Hofstaedtler <[email protected]> Mon, 13 Feb 2023 08:48:21 +0000 > + > util-linux (2.38.1-4) unstable; urgency=medium > > [ Helmut Grohne ] > diff -Nru util-linux-2.38.1/debian/patches/series > util-linux-2.38.1/debian/patches/series > --- util-linux-2.38.1/debian/patches/series 2022-11-25 15:19:08.000000000 > +0000 > +++ util-linux-2.38.1/debian/patches/series 2023-02-13 08:48:21.000000000 > +0000 > @@ -34,3 +34,4 @@ > upstream/PATCH-1-2-lib-pty-Put-master-PTY-into-non-blocking-mode-a.patch > upstream/PATCH-2-2-lib-pty-minor-cleanups.patch > upstream/PATCH-script-abort-if-unused-arguments-are-given.patch > +upstream/logger-always-update-header-when-read-from-stdin.patch > diff -Nru > util-linux-2.38.1/debian/patches/upstream/logger-always-update-header-when-read-from-stdin.patch > > util-linux-2.38.1/debian/patches/upstream/logger-always-update-header-when-read-from-stdin.patch > --- > util-linux-2.38.1/debian/patches/upstream/logger-always-update-header-when-read-from-stdin.patch > 1970-01-01 00:00:00.000000000 +0000 > +++ > util-linux-2.38.1/debian/patches/upstream/logger-always-update-header-when-read-from-stdin.patch > 2023-02-13 08:48:21.000000000 +0000 > @@ -0,0 +1,94 @@ > +From: Karel Zak <[email protected]> > +Date: Tue, 1 Nov 2022 10:30:06 +0100 > +Subject: logger: always update header when read from stdin > + > +The current code updates the header only when the priority has been > +changed. It's incorrect because wanted is a valid header or each entry > +(don't forget that logger for stdin use-case is used in pipe to log > +long-time running processes). > + > +This patch also fixes the initial timestamp; it was originally generated > +on logger startup, it now generates the header on the first message. > + > +$ (sleep 2; date; sleep 2; date; sleep 2; date) | logger --stderr --no-act > + > +old: > +<13>Nov 1 10:42:14 kzak: Tue Nov 1 10:42:16 AM CET 2022 > +<13>Nov 1 10:42:14 kzak: Tue Nov 1 10:42:18 AM CET 2022 > +<13>Nov 1 10:42:14 kzak: Tue Nov 1 10:42:20 AM CET 2022 > + > +new: > +<13>Nov 1 10:19:02 kzak: Tue Nov 1 10:19:02 AM CET 2022 > +<13>Nov 1 10:19:04 kzak: Tue Nov 1 10:19:04 AM CET 2022 > +<13>Nov 1 10:19:06 kzak: Tue Nov 1 10:19:06 AM CET 2022 > + > +Fixes: https://github.com/util-linux/util-linux/issues/1866 > +Signed-off-by: Karel Zak <[email protected]> > +--- > + misc-utils/logger.c | 18 +++++++----------- > + 1 file changed, 7 insertions(+), 11 deletions(-) > + > +diff --git a/misc-utils/logger.c b/misc-utils/logger.c > +index bec684f..e2b0b41 100644 > +--- a/misc-utils/logger.c > ++++ b/misc-utils/logger.c > +@@ -945,8 +945,6 @@ static void logger_open(struct logger_ctl *ctl) > + ctl->tag = ctl->login = xgetlogin(); > + if (!ctl->tag) > + ctl->tag = "<someone>"; > +- > +- generate_syslog_header(ctl); > + } > + > + /* re-open; usually after failed connection */ > +@@ -996,10 +994,8 @@ static void logger_stdin(struct logger_ctl *ctl) > + { > + /* note: we re-generate the syslog header for each log message to > + * update header timestamps and to reflect possible priority changes. > +- * The initial header is generated by logger_open(). > + */ > + int default_priority = ctl->pri; > +- int last_pri = default_priority; > + char *buf = xmalloc(ctl->max_message_size + 2 + 2); > + int pri; > + int c; > +@@ -1026,10 +1022,6 @@ static void logger_stdin(struct logger_ctl *ctl) > + } else > + ctl->pri = default_priority; > + > +- if (ctl->pri != last_pri) { > +- generate_syslog_header(ctl); > +- last_pri = ctl->pri; > +- } > + if (c != EOF && c != '\n') > + c = getchar(); > + } > +@@ -1040,8 +1032,10 @@ static void logger_stdin(struct logger_ctl *ctl) > + } > + buf[i] = '\0'; > + > +- if (i > 0 || !ctl->skip_empty_lines) > ++ if (i > 0 || !ctl->skip_empty_lines) { > ++ generate_syslog_header(ctl); > + write_output(ctl, buf); > ++ } > + > + if (c == '\n') /* discard line terminator */ > + c = getchar(); > +@@ -1317,12 +1311,14 @@ int main(int argc, char **argv) > + abort(); > + } > + logger_open(&ctl); > +- if (0 < argc) > ++ if (0 < argc) { > ++ generate_syslog_header(&ctl); > + logger_command_line(&ctl, argv); > +- else > ++ } else > + /* Note. --file <arg> reopens stdin making the below > + * function to be used for file inputs. */ > + logger_stdin(&ctl); > ++ > + logger_close(&ctl); > + return EXIT_SUCCESS; > + } -- Sebastian Ramacher

