do not log carriage return master
authorChristian Hesse <mail@eworm.de>
Mon, 9 Sep 2019 08:17:32 +0000 (10:17 +0200)
committerTomáš Mráz <t8m@users.noreply.github.com>
Mon, 9 Sep 2019 09:02:58 +0000 (11:02 +0200)
Some commands (like ssh) end their output with carriage return (\r) and
new line (\n). Just cutting the new line before sending to syslog may
have undesired effects of unprintable characters. Reading cronie logs
with journalctl I can see:

Sep 06 16:50:01 linux CROND[152575]: [96B blob data]

Adding switch --all for unprintable characters it shows:

Sep 06 16:50:01 linux CROND[152575]: (root) CMDOUT (Warning: Permanently
added '10.52.33.217' (ED25519) to the list of known hosts.^M)

Just skip carriage return for syslog to prevent this.

src/do_command.c

index 45c49f72db4ee76275fd9315b16e3252a4640862..ed56775515c4635573409b8ae691b7ce86b22c3c 100644 (file)
@@ -506,6 +506,8 @@ static int child_process(entry * e, char **jobenv) {
                         */
 
                        while (EOF != (ch = getc(in))) {
+                               if (ch == '\r')
+                                       continue;
                                bytes++;
                                if (mail)
                                        putc(ch, mail);