Hi Georges,

first off: this patch is completely irrelevant IMHO. We should not be discussing it. What's relevant is [1].

On Sun, 24 Jul 2022, Georges Khaznadar wrote:

two remarks:

1) most of Greek's patches which you adapted is about making cron
  installable without the package syslog.

That is what it claims but not what it does AFAICS. What it does is
adapt the `log_it` function so that it takes a `priority` parameter. But again. This patch is irrelevant. [1] is relevant IMO.

  Were are the parts about
  "log-to-stdout-when-in-foreground"?

It's at [2]. But it's irrelevant. [1] is relevant.

  I see that one patch modifies debian/patches/series, mentioning the
  file log-to-stdout-when-in-foreground, but that file is provided
  nowhere by the set of patches.

Again see [2]. But it's irrelevant. [1] is relevant.

By the way, do you know who is "Greek"?

No

  She or he did not reply to questions which I submitted about
  Bug#887014 ...

It's been 4 years since this bug has been filed so "Greek" might have moved on since.

  Is "Greek" a pseudonyme of yours?

No

2) I shall not patch cron 3.0pl1-137. You can do it if you want,
  for your own usage, of course. If I modify debian's cron package, I
  must do it in the testing distribution, so please propose patches
  targetting at least cron 3.0pl1-147. Then, if the modification you
  are wishing is accepted in debian/testing, I can create a backport to
  use in debian/bullseye later, for example a release such as cron
  3.0pl1-149~bpo11+1, to be published in bullseye-backports.

Ack. However I do not want that patch to be included because as I said as far as I can see it does *not* activate output to STDOUT, contrary to what the origianl message by "Greek" claims. That patch is irrelevant, I have only posted it in case somebody is interested in using it. But I am *not* interested in it. I am interested in [1] only.

Thanks!
*t

[1] - enable debugging logs: 
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=887035#15/
[2] - debian/patches: 
https://bugs.debian.org/cgi-bin/bugreport.cgi?att=2;bug=887035;filename=log-to-stdout-when-in-foreground;msg=25


Best regards,                   Georges.
Tomas Pospisek a écrit :
Package: cron
Version: 3.0pl1-137
Followup-For: Bug #887035
X-Debbugs-Cc: Georges Khaznadar <[email protected]>

If anybody wants to use Greek's patch (see [1] and [2]) then I'm attaching my
version of it adapted to cron 3.0pl1-137 (the version in Debian bullseye).

It comes in two parts: one is the patch and one is
cron-3.0pl1/debian/patches/log-to-stdout-when-in-foreground to satisfy
the Debian build infrastructure.

Use the patch like this to build a new, patched cron package:

    apt-get source cron
    sudo apt-get build-dep cron
    patch -p0 < 
cron-syslog-fix-and-foreground-stdout.for-new-cron.debianized.patch
    cp log-to-stdout-when-in-foreground cron-3.0pl1/debian/patches
    cd cron-3.0pl1 && dpkg-buildpackage -rfakeroot

*t

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=887035#5
[2] 
https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=887035;filename=cron-syslog-fix-and-foreground-stdout.patch;msg=5



-- Package-specific info:
--- EDITOR:


--- /usr/bin/editor:
/usr/bin/vim.gtk3

--- /usr/bin/crontab:
-rwxr-sr-x 1 root crontab 43568 Feb 22  2021 /usr/bin/crontab

--- /var/spool/cron:
drwxr-xr-x 3 root root 4096 Apr 10  2021 /var/spool/cron

--- /var/spool/cron/crontabs:
drwx-wx--T 2 root crontab 4096 Feb 22  2021 /var/spool/cron/crontabs

--- /etc/cron.d:
drwxr-xr-x 2 root root 4096 Jul 22 15:03 /etc/cron.d

--- /etc/cron.daily:
drwxr-xr-x 2 root root 4096 Jul 11 09:33 /etc/cron.daily

--- /etc/cron.hourly:
drwxr-xr-x 2 root root 4096 Apr 10  2021 /etc/cron.hourly

--- /etc/cron.monthly:
drwxr-xr-x 2 root root 4096 Apr 10  2021 /etc/cron.monthly

--- /etc/cron.weekly:
drwxr-xr-x 2 root root 4096 Apr 10  2021 /etc/cron.weekly


-- System Information:
Debian Release: 11.4
  APT prefers stable-security
  APT policy: (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.10.0-16-amd64 (SMP w/8 CPU threads)
Locale: LANG=de_CH.UTF-8, LC_CTYPE=de_CH.UTF-8 (charmap=UTF-8), 
LANGUAGE=de_CH:de
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages cron depends on:
ii  adduser              3.118
ii  debianutils          4.11.2
ii  init-system-helpers  1.60
ii  libc6                2.31-13+deb11u3
ii  libpam-runtime       1.4.0-9+deb11u1
ii  libpam0g             1.4.0-9+deb11u1
ii  libselinux1          3.1-3
ii  lsb-base             11.1.0
ii  sensible-utils       0.0.14

Versions of packages cron recommends:
ii  msmtp-mta [mail-transport-agent]  1.8.11-2.1

Versions of packages cron suggests:
ii  anacron        2.3-30
pn  checksecurity  <none>
ii  logrotate      3.18.0-2+deb11u1

Versions of packages cron is related to:
pn  libnss-ldap   <none>
pn  libnss-ldapd  <none>
pn  libpam-ldap   <none>
pn  libpam-mount  <none>
pn  nis           <none>
pn  nscd          <none>

-- no debconf information

diff -u -r orig/cron-3.0pl1/cron.c cron-3.0pl1/cron.c
--- orig/cron-3.0pl1/cron.c     2022-07-19 12:18:36.000000000 +0200
+++ cron-3.0pl1/cron.c  2022-07-19 14:24:39.000000000 +0200
@@ -122,12 +122,12 @@
        } else if (!stay_foreground) {
                switch (fork()) {
                case -1:
-                       log_it("CRON",getpid(),"DEATH","can't fork");
+                       log_it(LOG_ERR, "CRON",getpid(),"DEATH","can't fork");
                        exit(0);
                        break;
                case 0:
                        /* child process */
-                       log_it("CRON",getpid(),"STARTUP","fork ok");
+                       log_it(LOG_INFO, "CRON",getpid(),"STARTUP","fork ok");
                        (void) setsid();
                        freopen("/dev/null", "r", stdin);
                        freopen("/dev/null", "w", stdout);
@@ -281,18 +281,18 @@
        /* Run on actual reboot, rather than cron restart */
        if (access(REBOOT_FILE, F_OK) == 0) {
                /* File exists, return */
-               log_it("CRON", getpid(),"INFO",
+               log_it(LOG_INFO, "CRON", getpid(),"INFO",
                        "Skipping @reboot jobs -- not system startup");
                return;
        }
        /* Create the file */
        if ((rbfd = creat(REBOOT_FILE, S_IRUSR & S_IWUSR)) < 0) {
                /* Bad news, bail out */
-               log_it("CRON",getpid(),"DEATH","Can't create reboot check 
file");
+               log_it(LOG_ERR, "CRON",getpid(),"DEATH","Can't create reboot check 
file");
                exit(0);
        } else {
                close(rbfd);
-               log_it("CRON", getpid(),"INFO", "Running @reboot jobs");
+               log_it(LOG_INFO, "CRON", getpid(),"INFO", "Running @reboot 
jobs");
        }
        Debug(DMISC, ("[%d], running reboot jobs\n", getpid()));
        for (u = db->head;  u != NULL;  u = u->next) {
diff -u -r orig/cron-3.0pl1/cron.h cron-3.0pl1/cron.h
--- orig/cron-3.0pl1/cron.h     2022-07-19 12:18:36.000000000 +0200
+++ cron-3.0pl1/cron.h  2022-07-19 14:24:39.000000000 +0200
@@ -144,6 +144,20 @@
 #define        CRON_LOG_JOBFAILED      0x04
 #define        CRON_LOG_JOBPID         0x08

+/* Log priorities */
+#if !defined(SYSLOG)
+#define LOG_EMERG   0
+#define LOG_ALERT   1
+#define LOG_CRIT    2
+#define LOG_ERR     3
+#define LOG_WARNING 4
+#define LOG_NOTICE  5
+#define LOG_INFO    6
+#define LOG_DEBUG   7
+#else
+#include <syslog.h>
+#endif
+
 #define SECONDS_PER_MINUTE 60

 #define        FIRST_MINUTE    0
@@ -238,7 +252,7 @@
                free_entry __P((entry *)),
                acquire_daemonlock __P((int)),
                skip_comments __P((FILE *)),
-               log_it __P((char *, int, char *, char *)),
+               log_it __P((int, char *, int, char *, char *)),
                log_close __P((void)),
                check_orphans __P((cron_db *));

diff -u -r orig/cron-3.0pl1/crontab.c cron-3.0pl1/crontab.c
--- orig/cron-3.0pl1/crontab.c  2022-07-19 12:18:36.000000000 +0200
+++ cron-3.0pl1/crontab.c       2022-07-19 14:24:39.000000000 +0200
@@ -119,7 +119,7 @@
                                "You (%s) are not allowed to use this program 
(%s)\n",
                                User, ProgramName);
                        fprintf(stderr, "See crontab(1) for more 
information\n");
-                       log_it(RealUser, Pid, "AUTH", "crontab command not 
allowed");
+                       log_it(LOG_NOTICE, RealUser, Pid, "AUTH", "crontab command 
not allowed");
                } else {
                /* If the user is not allowed but root is running the
                * program warn but do not log */
@@ -301,7 +301,7 @@
        int     x;
        char    *ctnh;

-       log_it(RealUser, Pid, "LIST", User);
+       log_it(LOG_INFO, RealUser, Pid, "LIST", User);
        (void) snprintf(n, MAX_FNAME, CRON_TAB(User));
        if (!(f = fopen(n, "r"))) {
                if (errno == ENOENT)
@@ -383,7 +383,7 @@
                }
        }

-       log_it(RealUser, Pid, "DELETE", User);
+       log_it(LOG_INFO, RealUser, Pid, "DELETE", User);
        if (unlink(n)) {
                if (errno == ENOENT)
                        fprintf(stderr, "no crontab for %s\n", User);
@@ -551,7 +551,7 @@
        mode_t          um;
        int             add_help_text = 0;

-       log_it(RealUser, Pid, "BEGIN EDIT", User);
+       log_it(LOG_INFO, RealUser, Pid, "BEGIN EDIT", User);
        (void) snprintf(n, MAX_FNAME, CRON_TAB(User));
        if (!(f = fopen(n, "r"))) {
                if (errno != ENOENT) {
@@ -779,7 +779,7 @@
  remove:
        cleanup_tmp_crontab();
  done:
-       log_it(RealUser, Pid, "END EDIT", User);
+       log_it(LOG_INFO, RealUser, Pid, "END EDIT", User);
         return;
  fatal:
        cleanup_tmp_crontab();
@@ -941,7 +941,7 @@
                unlink(tn);
                return (-2);
        }
-       log_it(RealUser, Pid, "REPLACE", User);
+       log_it(LOG_INFO, RealUser, Pid, "REPLACE", User);

        poke_daemon();

diff -u -r orig/cron-3.0pl1/database.c cron-3.0pl1/database.c
--- orig/cron-3.0pl1/database.c 2022-07-19 12:18:36.000000000 +0200
+++ cron-3.0pl1/database.c      2022-07-19 14:24:39.000000000 +0200
@@ -78,14 +78,14 @@
         * cached any of the database), we'll see the changes next time.
         */
        if (stat(SPOOL_DIR, &statbuf) < OK) {
-               log_it("CRON", getpid(), "STAT FAILED", SPOOL_DIR);
+               log_it(LOG_WARNING, "CRON", getpid(), "STAT FAILED", SPOOL_DIR);
                statbuf.st_mtime = 0;
        }

        /* track system crontab file
         */
        if (stat(SYSCRONTAB, &syscron_stat) < OK) {
-               log_it("CRON", getpid(), "STAT FAILED", SYSCRONTAB);
+               log_it(LOG_WARNING, "CRON", getpid(), "STAT FAILED", 
SYSCRONTAB);
                syscron_stat.st_mtime = 0;
        }

@@ -94,7 +94,7 @@
         * file check won't
         */
        if (stat(SYSCRONDIR, &syscrond_stat) < OK) {
-               log_it("CRON", getpid(), "STAT FAILED", SYSCRONDIR);
+               log_it(LOG_WARNING, "CRON", getpid(), "STAT FAILED", 
SYSCRONDIR);
                syscrond_stat.st_mtime = 0;
        }

@@ -168,7 +168,7 @@

        /* Read all the package crontabs. */
        if (!(dir = opendir(SYSCRONDIR))) {
-               log_it("CRON", getpid(), "OPENDIR FAILED", SYSCRONDIR);
+               log_it(LOG_WARNING, "CRON", getpid(), "OPENDIR FAILED", 
SYSCRONDIR);
        }

        while (dir != NULL && NULL != (dp = readdir(dir))) {
@@ -209,7 +209,7 @@
         * we fork a lot more often than the mtime of the dir changes.
         */
        if (!(dir = opendir(SPOOL_DIR))) {
-               log_it("CRON", getpid(), "OPENDIR FAILED", SPOOL_DIR);
+               log_it(LOG_WARNING, "CRON", getpid(), "OPENDIR FAILED", 
SPOOL_DIR);
        }

        while (dir != NULL && NULL != (dp = readdir(dir))) {
@@ -323,7 +323,7 @@
                 */
                if (strncmp(fname, "tmp.", 4)) {
                        /* don't log these temporary files */
-                       log_it(fname, getpid(), "ORPHAN", "no passwd entry");
+                       log_it(LOG_NOTICE, fname, getpid(), "ORPHAN", "no passwd 
entry");
                        add_orphan(uname, fname, tabname);
                }
                goto next_crontab;
@@ -334,39 +334,39 @@
                if ((crontab_fd = open(tabname, O_RDONLY|O_NOFOLLOW, 0)) < OK) {
                        /* crontab not accessible?
                         */
-                       log_it(fname, getpid(), "CAN'T OPEN", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "CAN'T OPEN", 
tabname);
                        goto next_crontab;
                }

                if (fstat(crontab_fd, statbuf) < OK) {
-                       log_it(fname, getpid(), "FSTAT FAILED", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "FSTAT FAILED", 
tabname);
                        goto next_crontab;
                }
                /* Check to make sure that the crontab is owned by the correct 
user
                   (or root) */

                if (statbuf->st_uid != pw->pw_uid && statbuf->st_uid != 
ROOT_UID) {
-                       log_it(fname, getpid(), "WRONG FILE OWNER", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "WRONG FILE OWNER", 
tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }

                /* Check to make sure that the crontab is a regular file */
                if (!S_ISREG(statbuf->st_mode)) {
-                       log_it(fname, getpid(), "NOT A REGULAR FILE", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "NOT A REGULAR 
FILE", tabname);
                        goto next_crontab;
                }

                /* Check to make sure that the crontab's permissions are secure 
*/
                if ((statbuf->st_mode & 07777) != 0600) {
-                       log_it(fname, getpid(), "INSECURE MODE (mode 0600 
expected)", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "INSECURE MODE (mode 
0600 expected)", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }

                /* Check to make sure that there are no hardlinks to the 
crontab */
                if (statbuf->st_nlink != 1) {
-                       log_it(fname, getpid(), "NUMBER OF HARD LINKS > 1", 
tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "NUMBER OF HARD LINKS > 
1", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }
@@ -374,11 +374,11 @@
                /* System crontab path. These can be symlinks, but the
                   symlink and the target must be owned by root. */
                if (lstat(tabname, statbuf) < OK) {
-                       log_it(fname, getpid(), "LSTAT FAILED", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "LSTAT FAILED", 
tabname);
                        goto next_crontab;
                }
                if (S_ISLNK(statbuf->st_mode) && statbuf->st_uid != ROOT_UID) {
-                       log_it(fname, getpid(), "WRONG SYMLINK OWNER", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "WRONG SYMLINK 
OWNER", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }
@@ -392,29 +392,29 @@
                         * skip it instead.
                         */
                        if (S_ISLNK(statbuf->st_mode)) {
-                               log_it(fname, getpid(), "CAN'T OPEN SYMLINK", 
tabname);
+                               log_it(LOG_NOTICE, fname, getpid(), "CAN'T OPEN 
SYMLINK", tabname);
                                force_rescan_user(old_db, new_db, fname, 0);
                        } else {
-                               log_it(fname, getpid(), "CAN'T OPEN", tabname);
+                               log_it(LOG_WARNING, fname, getpid(), "CAN'T 
OPEN", tabname);
                        }
                        goto next_crontab;
                }

                if (fstat(crontab_fd, statbuf) < OK) {
-                       log_it(fname, getpid(), "FSTAT FAILED", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "FSTAT FAILED", 
tabname);
                        goto next_crontab;
                }

                /* Check to make sure that the crontab is owned by root */
                if (statbuf->st_uid != ROOT_UID) {
-                       log_it(fname, getpid(), "WRONG FILE OWNER", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "WRONG FILE OWNER", 
tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }

                /* Check to make sure that the crontab is a regular file */
                if (!S_ISREG(statbuf->st_mode)) {
-                       log_it(fname, getpid(), "NOT A REGULAR FILE", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "NOT A REGULAR 
FILE", tabname);
                        goto next_crontab;
                }

@@ -423,7 +423,7 @@
                 * (mode 0600). An upgrade path could be implemented for 4.1
                 */
                if ((statbuf->st_mode & S_IWGRP) || (statbuf->st_mode & 
S_IWOTH)) {
-                       log_it(fname, getpid(), "INSECURE MODE (group/other 
writable)", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "INSECURE MODE 
(group/other writable)", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }
@@ -436,7 +436,7 @@

                /* Check to make sure that there are no hardlinks to the 
crontab */
                if (statbuf->st_nlink != 1) {
-                       log_it(fname, getpid(), "NUMBER OF HARD LINKS > 1", 
tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "NUMBER OF HARD LINKS > 
1", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }
@@ -473,7 +473,7 @@
                Debug(DLOAD, (" [delete old data]"))
                unlink_user(old_db, u);
                free_user(u);
-               log_it(fname, getpid(), "RELOAD", tabname);
+               log_it(LOG_INFO, fname, getpid(), "RELOAD", tabname);
        }

        u = load_user(crontab_fd, pw, uname, fname, tabname);
@@ -521,7 +521,7 @@
           || regcomp(&tradre, "^[a-z0-9][a-z0-9-]*$", REG_NOSUB)
           || regcomp(&classicalre, "^[a-zA-Z0-9_-]+$",
                      REG_EXTENDED | REG_NOSUB)) {
-          log_it("CRON", getpid(), "REGEX FAILED", "valid_name");
+          log_it(LOG_NOTICE, "CRON", getpid(), "REGEX FAILED", "valid_name");
           (void) exit(ERROR_EXIT);
       }
   }
diff -u -r orig/cron-3.0pl1/debian/changelog cron-3.0pl1/debian/changelog
--- orig/cron-3.0pl1/debian/changelog   2021-02-22 23:43:24.000000000 +0100
+++ cron-3.0pl1/debian/changelog        2022-07-19 12:37:40.866659216 +0200
@@ -1,3 +1,14 @@
+cron (3.0pl1-137+deb8u1.1) unstable; urgency=medium
+
+  [ Greek - [email protected] ]
+  * log to STDOUT when running in foreground
+
+  [ Tomáš Pospíšek ]
+  * Non-maintainer upload.
+  * adapt Greek's patch to newer Debian cron
+
+ -- Tomáš Pospíšek <[email protected]>  Tue, 19 Jul 2022 12:35:17 +0200
+
 cron (3.0pl1-137) unstable; urgency=medium

   [ Laurent Combe ]
diff -u -r orig/cron-3.0pl1/debian/patches/series 
cron-3.0pl1/debian/patches/series
--- orig/cron-3.0pl1/debian/patches/series      2021-02-22 23:43:24.000000000 
+0100
+++ cron-3.0pl1/debian/patches/series   2022-07-19 14:24:39.013731786 +0200
@@ -68,3 +68,4 @@
 features/Check-orphaned-crontabs-for-adoption.patch
 features/Add-option-to-include-FQDN-in-email.patch
 features/Add-MAILFROM-environment-variable.patch
+log-to-stdout-when-in-foreground
diff -u -r orig/cron-3.0pl1/do_command.c cron-3.0pl1/do_command.c
--- orig/cron-3.0pl1/do_command.c       2022-07-19 12:18:36.000000000 +0200
+++ cron-3.0pl1/do_command.c    2022-07-19 14:24:39.000000000 +0200
@@ -72,7 +72,11 @@

        while ((cronvar = cronenv[count++])) {
                if (!(jobenv = env_set(jobenv, cronvar))) {
-                       syslog(LOG_ERR, "Setting Cron environment variable %s 
failed", cronvar);
+                        char buf[MAX_TEMPSTR];
+                        snprintf(buf, MAX_TEMPSTR,
+                            "Setting Cron environment variable %s failed\n",
+                            cronvar);
+                        log_it(LOG_ERR, "CRON", getpid(), "CRON ENVIROMENT 
FAIL", buf);
                        return NULL;
                }
        }
@@ -97,7 +102,7 @@
         */
        switch (fork()) {
        case -1:
-               log_it("CRON",getpid(),"error","can't fork");
+               log_it(LOG_ERR, "CRON",getpid(),"error","can't fork");
                break;
        case 0:
                /* child process */
@@ -175,7 +180,7 @@
        pipe(stdin_pipe);       /* child's stdin */
        /* child's stdout */
        if ((tmpout = tmpfile()) == NULL) {
-               log_it("CRON", getpid(), "error", "create tmpfile");
+               log_it(LOG_ERR, "CRON", getpid(), "error", "create tmpfile");
                exit(ERROR_EXIT);
        }

@@ -233,7 +238,7 @@
         */
        switch (job_pid = fork()) {
        case -1:
-               log_it("CRON",getpid(),"error","can't fork");
+               log_it(LOG_ERR, "CRON",getpid(),"error","can't fork");
                exit(ERROR_EXIT);
                /*NOTREACHED*/
        case 0:
@@ -247,7 +252,7 @@
                 */
                if ((log_level & CRON_LOG_JOBSTART) && ! (log_level & 
CRON_LOG_JOBPID)) {
                        char *x = mkprints((u_char *)e->cmd, strlen(e->cmd));
-                       log_it(usernm, getpid(), "CMD", x);
+                       log_it(LOG_INFO, usernm, getpid(), "CMD", x);
                        free(x);
                }
                /* nothing to log from now on. close the log files.
@@ -292,7 +297,7 @@
                        char msg[256];
                        snprintf(msg, 256, "do_command:setgid(%lu) failed: %s",
                                (unsigned long) e->gid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
 # if defined(BSD) || defined(POSIX)
@@ -300,7 +305,7 @@
                        char msg[256];
                        snprintf(msg, 256, "do_command:initgroups(%lu) failed: 
%s",
                                (unsigned long) e->gid, strerror(errno));
-                 log_it("CRON",getpid(),"error",msg);
+                 log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                  exit(ERROR_EXIT);
                }
 # endif
@@ -308,7 +313,7 @@
                        char msg[256];
                        snprintf(msg, 256, "do_command:setuid(%lu) failed: %s",
                                (unsigned long) e->uid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
                chdir(env_get("HOME", e->envp));
@@ -359,7 +364,7 @@
                        char logcmd[MAX_COMMAND + 8];
                        snprintf(logcmd, sizeof(logcmd), "[%d] %s", (int) job_pid, 
e->cmd);
                        char *x = mkprints((u_char *)logcmd, strlen(logcmd));
-                       log_it(usernm, getpid(), "CMD", x);
+                       log_it(LOG_INFO, usernm, getpid(), "CMD", x);
                        free(x);
                }
                break;
@@ -468,13 +473,13 @@
                                status = waiter;
                                snprintf(msg, 256, "grandchild #%d failed with exit 
"
                                        "status %d", pid, WEXITSTATUS(waiter));
-                               log_it("CRON", getpid(), "error", msg);
+                               log_it(LOG_ERR, "CRON", getpid(), "error", msg);
                        } else if (WIFSIGNALED(waiter)) {
                                status = waiter;
                                snprintf(msg, 256, "grandchild #%d terminated by 
signal"
                                        " %d%s", pid, WTERMSIG(waiter),
                                        WCOREDUMP(waiter) ? ", dumped core" : 
"");
-                               log_it("CRON", getpid(), "error", msg);
+                               log_it(LOG_ERR, "CRON", getpid(), "error", msg);
                        }
                }
        }
@@ -511,7 +516,7 @@
        if (stat(MAILCMD, &mcsb) != 0) {
                Debug(DPROC|DEXT, ("%s not found, not sending mail\n", MAILCMD))
                if (pos > 0) {
-                       log_it("CRON", getpid(), "info", "No MTA installed, 
discarding output");
+                       log_it(LOG_WARNING, "CRON", getpid(), "info", "No MTA 
installed, discarding output");
                }
                goto mail_finished;
        } else {
@@ -619,11 +624,11 @@
                                "mailed %d byte%s of output "
                                "but got status 0x%04x from MTA\n",
                                bytes, (bytes==1)?"":"s", status);
-               log_it(usernm, getpid(), "MAIL", buf);
+               log_it(LOG_INFO, usernm, getpid(), "MAIL", buf);
        }

        if (ferror(tmpout)) {
-               log_it(usernm, getpid(), "MAIL", "stream error reading output");
+               log_it(LOG_NOTICE, usernm, getpid(), "MAIL", "stream error reading 
output");
        }

 mail_finished:
@@ -638,7 +643,7 @@
                } else {
                        x = mkprints((u_char *)e->cmd, strlen(e->cmd));
                }
-               log_it(usernm, job_pid, "END", x);
+               log_it(LOG_INFO, usernm, job_pid, "END", x);
                free(x);
        }

@@ -696,7 +701,7 @@
                if (isascii(ch) && isprint(ch) &&
                        (isalnum(ch) || (!first && strchr(safe_delim, ch))))
                        continue;
-               log_it(usernm, getpid(), "UNSAFE MAIL", s);
+               log_it(LOG_WARNING, usernm, getpid(), "UNSAFE MAIL", s);
                return (FALSE);
        }
        return (TRUE);
diff -u -r orig/cron-3.0pl1/entry.c cron-3.0pl1/entry.c
--- orig/cron-3.0pl1/entry.c    2022-07-19 12:18:36.000000000 +0200
+++ cron-3.0pl1/entry.c 2022-07-19 14:24:39.000000000 +0200
@@ -109,7 +109,7 @@

        e = (entry *) calloc(sizeof(entry), sizeof(char));
        if (e == NULL) {
-               log_it("CRON", getpid(), "OOM", "Out of memory parsing 
crontab");
+               log_it(LOG_ERR, "CRON", getpid(), "OOM", "Out of memory parsing 
crontab");
                return NULL;
        }

diff -u -r orig/cron-3.0pl1/misc.c cron-3.0pl1/misc.c
--- orig/cron-3.0pl1/misc.c     2022-07-19 12:18:36.000000000 +0200
+++ cron-3.0pl1/misc.c  2022-07-19 14:24:39.000000000 +0200
@@ -303,7 +303,7 @@
                        snprintf(buf, MAX_TEMPSTR, "can't open or create %s: 
%s",
                                pidfile, strerror(errno));
                        fprintf(stderr, "%s: %s\n", ProgramName, buf);
-                       log_it("CRON", getpid(), "DEATH", buf);
+                       log_it(LOG_ERR, "CRON", getpid(), "DEATH", buf);
                        exit(ERROR_EXIT);
                }

@@ -314,11 +314,11 @@
                        snprintf(buf, MAX_TEMPSTR, "can't lock %s, otherpid may be 
%d: %s",
                                pidfile, otherpid, strerror(save_errno));
                        fprintf(stderr, "%s: %s\n", ProgramName, buf);
-                       log_it("CRON", getpid(), "DEATH", buf);
+                       log_it(LOG_ERR, "CRON", getpid(), "DEATH", buf);
                        exit(ERROR_EXIT);
                }
                snprintf(buf, MAX_TEMPSTR, "pidfile fd = %d", fd);
-               log_it("CRON", getpid(), "INFO", buf);
+               log_it(LOG_INFO, "CRON", getpid(), "INFO", buf);
                (void) fcntl(fd, F_SETFD, 1);
        }

@@ -523,7 +523,8 @@


 void
-log_it(username, xpid, event, detail)
+log_it(priority, username, xpid, event, detail)
+       int priority;
        char    *username;
        int     xpid;
        char    *event;
@@ -531,6 +532,39 @@
 {
        PID_T                   pid = xpid;
 #if defined(LOG_FILE)
+
+    /* Logging priority parsing */
+    char    *prio;
+    switch(priority){
+        case LOG_EMERG:
+            prio = "EMERGENCY: ";
+            break;
+        case LOG_ALERT:
+            prio = "ALERT: ";
+            break;
+        case LOG_CRIT:
+            prio = "CRITICAL: ";
+            break;
+        case LOG_ERR:
+            prio = "ERROR: ";
+            break;
+        case LOG_WARNING:
+            prio = "WARNING: ";
+            break;
+        case LOG_NOTICE:
+            prio = "NOTICE: ";
+            break;
+        case LOG_INFO:
+            prio = "INFO: ";
+            break;
+        case LOG_DEBUG:
+            prio = "DEBUG: ";
+            break;
+        default:
+            prio = "INFO: ";
+            break;
+    }
+
        char                    *msg;
        TIME_T                  now = time((TIME_T) 0);
        register struct tm      *t = localtime(&now);
@@ -540,7 +574,7 @@
 #if defined(LOG_FILE)
        /* we assume that MAX_TEMPSTR will hold the date, time, &punctuation.
         */
-       msg_size = strlen(username) + strlen(event) + strlen(detail) + 
MAX_TEMPSTR;
+       msg_size = strlen(prio) + strlen(username) + strlen(event) + 
strlen(detail) + MAX_TEMPSTR;
        msg = malloc(msg_size);
        if (msg == NULL) {
                /* damn, out of mem and we did not test that before... */
@@ -562,8 +596,8 @@
         * everything out in one chunk and this has to be atomically appended
         * to the log file.
         */
-       snprintf(msg, msg_size, "%s (%02d/%02d-%02d:%02d:%02d-%d) %s (%s)\n",
-               username,
+       snprintf(msg, msg_size, "%s%s (%02d/%02d-%02d:%02d:%02d-%d) %s (%s)\n",
+               prio, username,
                t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, pid,
                event, detail);

@@ -586,13 +620,13 @@
        openlog(ProgramName, LOG_PID);
 # endif

-       syslog(LOG_INFO, "(%s) %s (%s)", username, event, detail);
+       syslog(priority, "(%s) %s (%s)", username, event, detail);

 #endif /*SYSLOG*/

 #if DEBUGGING
        if (DebugFlags) {
-               fprintf(stderr, "log_it: (%s %d) %s (%s)\n",
+               fprintf(stderr, "log_it: priority %d (%s %d) %s (%s)\n",
                        username, xpid, event, detail);
        }
 #endif
diff -u -r orig/cron-3.0pl1/.pc/applied-patches cron-3.0pl1/.pc/applied-patches
--- orig/cron-3.0pl1/.pc/applied-patches        2022-07-19 12:18:36.185796305 
+0200
+++ cron-3.0pl1/.pc/applied-patches     2022-07-19 14:24:39.029731419 +0200
@@ -68,3 +68,4 @@
 features/Check-orphaned-crontabs-for-adoption.patch
 features/Add-option-to-include-FQDN-in-email.patch
 features/Add-MAILFROM-environment-variable.patch
+log-to-stdout-when-in-foreground
diff -u -r orig/cron-3.0pl1/popen.c cron-3.0pl1/popen.c
--- orig/cron-3.0pl1/popen.c    2022-07-19 12:18:36.000000000 +0200
+++ cron-3.0pl1/popen.c 2022-07-19 14:24:39.000000000 +0200
@@ -128,7 +128,7 @@
                        char msg[256];
                        snprintf(msg, 256, "popen:setgid(%lu) failed: %s",
                                (unsigned long) e->gid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
 # if defined(BSD) || defined(POSIX)
@@ -136,7 +136,7 @@
                        char msg[256];
                        snprintf(msg, 256, "popen:initgroups(%lu) failed: %s",
                                (unsigned long) e->gid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
 # endif
@@ -144,7 +144,7 @@
                        char msg[256];
                        snprintf(msg, 256, "popen: setuid(%lu) failed: %s",
                                (unsigned long) e->uid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
                chdir(env_get("HOME", e->envp));
diff -u -r orig/cron-3.0pl1/user.c cron-3.0pl1/user.c
--- orig/cron-3.0pl1/user.c     2022-07-19 12:18:36.000000000 +0200
+++ cron-3.0pl1/user.c  2022-07-19 14:24:39.000000000 +0200
@@ -23,7 +23,9 @@
  */


+#if defined(SYSLOG)
 #include <syslog.h>
+#endif
 #include <string.h>
 #include "cron.h"

@@ -46,20 +48,20 @@
        int i;

        if (getcon(&current_con)) {
-               log_it(name, getpid(), "Can't get current context", tabname);
+               log_it(LOG_ERR, name, getpid(), "Can't get current context", 
tabname);
                return -1;
        }

        if (name != NULL) {
                if (getseuserbyname(name, &seuser, &level)) {
-                       log_it(name, getpid(), "getseuserbyname FAILED", 
tabname);
+                       log_it(LOG_ERR, name, getpid(), "getseuserbyname 
FAILED", tabname);
                        freecon(current_con);
                        return (security_getenforce() > 0);
                }
        } else {
                context_t temp_con = context_new(current_con);
                if (temp_con == NULL) {
-                       log_it(name, getpid(), "context_new FAILED", tabname);
+                       log_it(LOG_ERR, name, getpid(), "context_new FAILED", 
tabname);
                        freecon(current_con);
                        return (security_getenforce() > 0);
                }
@@ -74,10 +76,10 @@
        free(level);
        if (list_count == -1) {
                if (security_getenforce() > 0) {
-                       log_it(name, getpid(), "No SELinux security context", 
tabname);
+                       log_it(LOG_ERR, name, getpid(), "No SELinux security 
context", tabname);
                        return -1;
                } else {
-                       log_it(name, getpid(),
+                       log_it(LOG_NOTICE, name, getpid(),
                                "No security context but SELinux in permissive 
mode,"
                                " continuing", tabname);
                        return 0;
@@ -86,11 +88,11 @@

        if (fgetfilecon(crontab_fd, &file_context) < OK) {
                if (security_getenforce() > 0) {
-                       log_it(name, getpid(), "getfilecon FAILED", tabname);
+                       log_it(LOG_ERR, name, getpid(), "getfilecon FAILED", 
tabname);
                        freeconary(context_list);
                        return -1;
                } else {
-                       log_it(name, getpid(), "getfilecon FAILED but SELinux in 
"
+                       log_it(LOG_NOTICE, name, getpid(), "getfilecon FAILED but 
SELinux in "
                                "permissive mode, continuing", tabname);
                        *rcontext = strdup(context_list[0]);
                        freeconary(context_list);
@@ -108,7 +110,7 @@

        security_class_t tclass = string_to_security_class("file");
        if (!tclass) {
-               log_it(name, getpid(), "Failed to translate security class 
file", tabname);
+               log_it(LOG_ERR, name, getpid(), "Failed to translate security class 
file", tabname);
                freeconary(context_list);
                if (security_deny_unknown() == 0) {
                        return 0;
@@ -119,7 +121,7 @@

        access_vector_t bit = string_to_av_perm(tclass, "entrypoint");
        if (!bit) {
-               log_it(name, getpid(), "Failed to translate av perm 
entrypoint", tabname);
+               log_it(LOG_ERR, name, getpid(), "Failed to translate av perm 
entrypoint", tabname);
                freeconary(context_list);
                if (security_deny_unknown() == 0) {
                        return 0;
@@ -143,11 +145,11 @@
        }
        freecon(file_context);
        if (security_getenforce() > 0) {
-               log_it(name, getpid(), "ENTRYPOINT FAILED", tabname);
+               log_it(LOG_ERR, name, getpid(), "ENTRYPOINT FAILED", tabname);
                freeconary(context_list);
                return -1;
        } else {
-               log_it(name, getpid(), "ENTRYPOINT FAILED but SELinux in permissive 
mode, continuing", tabname);
+               log_it(LOG_NOTICE, name, getpid(), "ENTRYPOINT FAILED but SELinux in 
permissive mode, continuing", tabname);
                *rcontext = strdup(context_list[0]);
                freeconary(context_list);
        }
@@ -168,14 +170,25 @@
        const char *fn;
        /* Figure out the file name from the username */
        if (0 == strcmp(err_user, "*system*")) {
-               syslog(LOG_ERR|LOG_CRON, "Error: %s; while reading %s", msg, 
SYSCRONTAB);
+               char buf[MAX_TEMPSTR];
+               snprintf(buf, MAX_TEMPSTR,
+                   "Error: %s; while reading %s",
+                   msg, SYSCRONTAB);
+               log_it(LOG_ERR, err_user, getpid(), "ERROR", buf);
        } else if (0 == strncmp(err_user,"*system*",8)) {
                fn = err_user+8;
-               syslog(LOG_ERR|LOG_CRON, "Error: %s; while reading %s/%s", msg,
-               SYSCRONDIR,fn);
+               char buf[MAX_TEMPSTR];
+               snprintf(buf, MAX_TEMPSTR,
+                   "Error: %s; while reading %s/%s",
+                   msg, SYSCRONDIR, fn);
+               log_it(LOG_ERR, err_user, getpid(), "ERROR", buf);
+
        } else {
-               syslog(LOG_ERR|LOG_CRON, "Error: %s; while reading crontab for user 
%s",
-                       msg, err_user);
+               char buf[MAX_TEMPSTR];
+               snprintf(buf, MAX_TEMPSTR,
+                   "Error: %s; while reading crontab for user %s",
+                   msg, err_user);
+               log_it(LOG_ERR, err_user, getpid(), "ERROR", buf);
        }
 }

@@ -274,7 +287,7 @@
                         * newline, so we bail out
                         */
                        if (envstr[0] != '\0') {
-                               log_it(u->name, getpid(), "ERROR", "Missing "
+                               log_it(LOG_WARNING, u->name, getpid(), "ERROR", 
"Missing "
                                "newline before EOF, this crontab file will be "
                                "ignored");
                                free_user(u);
@@ -290,7 +303,7 @@
                                u->crontab = e;
                        } else {
                                /* stop processing on syntax error */
-                               log_it(u->name, getpid(), "ERROR", "Syntax "
+                               log_it(LOG_WARNING, u->name, getpid(), "ERROR", 
"Syntax "
                                        "error, this crontab file will be "
                                        "ignored");
                                free_user(u);
@@ -314,7 +327,7 @@
        } while (status >= OK && LineNumber < MAX_TAB_LINES + NHEADER_LINES + 
2);

        if (LineNumber >= MAX_TAB_LINES + NHEADER_LINES + 2) {
-               log_it(fname, getpid(), "ERROR", "crontab must not be longer "
+               log_it(LOG_WARNING, fname, getpid(), "ERROR", "crontab must not be 
longer "
                                "than " Stringify(MAX_TAB_LINES) " lines, "
                                "this crontab file will be ignored");
                free_user(u);

Description: <short summary of the patch>
 cron (3.0pl1-137+deb8u1.1) unstable; urgency=medium
 .
   [ Greek - [email protected] ]
   * log to STDOUT when running in foreground
 .
   [ Tomáš Pospíšek ]
   * Non-maintainer upload.
   * adapt Greek's patch to newer Debian cron
Author: Tomáš Pospíšek <[email protected]>

---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: other, 
https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=887035;filename=cron-syslog-fix-and-foreground-stdout.patch;msg=5
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=887035
Reviewed-By: Tomáš Pospíšek <[email protected]>
Last-Update: 2022-07-19

--- cron-3.0pl1.orig/cron.c
+++ cron-3.0pl1/cron.c
@@ -122,12 +122,12 @@ main(argc, argv)
        } else if (!stay_foreground) {
                switch (fork()) {
                case -1:
-                       log_it("CRON",getpid(),"DEATH","can't fork");
+                       log_it(LOG_ERR, "CRON",getpid(),"DEATH","can't fork");
                        exit(0);
                        break;
                case 0:
                        /* child process */
-                       log_it("CRON",getpid(),"STARTUP","fork ok");
+                       log_it(LOG_INFO, "CRON",getpid(),"STARTUP","fork ok");
                        (void) setsid();
                        freopen("/dev/null", "r", stdin);
                        freopen("/dev/null", "w", stdout);
@@ -281,18 +281,18 @@ run_reboot_jobs(db)
        /* Run on actual reboot, rather than cron restart */
        if (access(REBOOT_FILE, F_OK) == 0) {
                /* File exists, return */
-               log_it("CRON", getpid(),"INFO",
+               log_it(LOG_INFO, "CRON", getpid(),"INFO",
                        "Skipping @reboot jobs -- not system startup");
                return;
        }
        /* Create the file */
        if ((rbfd = creat(REBOOT_FILE, S_IRUSR & S_IWUSR)) < 0) {
                /* Bad news, bail out */
-               log_it("CRON",getpid(),"DEATH","Can't create reboot check 
file");
+               log_it(LOG_ERR, "CRON",getpid(),"DEATH","Can't create reboot check 
file");
                exit(0);
        } else {
                close(rbfd);
-               log_it("CRON", getpid(),"INFO", "Running @reboot jobs");
+               log_it(LOG_INFO, "CRON", getpid(),"INFO", "Running @reboot 
jobs");
        }
        Debug(DMISC, ("[%d], running reboot jobs\n", getpid()));
        for (u = db->head;  u != NULL;  u = u->next) {
--- cron-3.0pl1.orig/cron.h
+++ cron-3.0pl1/cron.h
@@ -144,6 +144,20 @@ typedef int time_min;
 #define        CRON_LOG_JOBFAILED      0x04
 #define        CRON_LOG_JOBPID         0x08

+/* Log priorities */
+#if !defined(SYSLOG)
+#define LOG_EMERG   0
+#define LOG_ALERT   1
+#define LOG_CRIT    2
+#define LOG_ERR     3
+#define LOG_WARNING 4
+#define LOG_NOTICE  5
+#define LOG_INFO    6
+#define LOG_DEBUG   7
+#else
+#include <syslog.h>
+#endif
+
 #define SECONDS_PER_MINUTE 60

 #define        FIRST_MINUTE    0
@@ -238,7 +252,7 @@ void                set_cron_uid __P((void)),
                free_entry __P((entry *)),
                acquire_daemonlock __P((int)),
                skip_comments __P((FILE *)),
-               log_it __P((char *, int, char *, char *)),
+               log_it __P((int, char *, int, char *, char *)),
                log_close __P((void)),
                check_orphans __P((cron_db *));

--- cron-3.0pl1.orig/crontab.c
+++ cron-3.0pl1/crontab.c
@@ -119,7 +119,7 @@ main(argc, argv)
                                "You (%s) are not allowed to use this program 
(%s)\n",
                                User, ProgramName);
                        fprintf(stderr, "See crontab(1) for more 
information\n");
-                       log_it(RealUser, Pid, "AUTH", "crontab command not 
allowed");
+                       log_it(LOG_NOTICE, RealUser, Pid, "AUTH", "crontab command 
not allowed");
                } else {
                /* If the user is not allowed but root is running the
                * program warn but do not log */
@@ -301,7 +301,7 @@ list_cmd() {
        int     x;
        char    *ctnh;

-       log_it(RealUser, Pid, "LIST", User);
+       log_it(LOG_INFO, RealUser, Pid, "LIST", User);
        (void) snprintf(n, MAX_FNAME, CRON_TAB(User));
        if (!(f = fopen(n, "r"))) {
                if (errno == ENOENT)
@@ -383,7 +383,7 @@ delete_cmd() {
                }
        }

-       log_it(RealUser, Pid, "DELETE", User);
+       log_it(LOG_INFO, RealUser, Pid, "DELETE", User);
        if (unlink(n)) {
                if (errno == ENOENT)
                        fprintf(stderr, "no crontab for %s\n", User);
@@ -551,7 +551,7 @@ edit_cmd() {
        mode_t          um;
        int             add_help_text = 0;

-       log_it(RealUser, Pid, "BEGIN EDIT", User);
+       log_it(LOG_INFO, RealUser, Pid, "BEGIN EDIT", User);
        (void) snprintf(n, MAX_FNAME, CRON_TAB(User));
        if (!(f = fopen(n, "r"))) {
                if (errno != ENOENT) {
@@ -779,7 +779,7 @@ again: /* Loop point for retrying edit a
  remove:
        cleanup_tmp_crontab();
  done:
-       log_it(RealUser, Pid, "END EDIT", User);
+       log_it(LOG_INFO, RealUser, Pid, "END EDIT", User);
         return;
  fatal:
        cleanup_tmp_crontab();
@@ -941,7 +941,7 @@ replace_cmd() {
                unlink(tn);
                return (-2);
        }
-       log_it(RealUser, Pid, "REPLACE", User);
+       log_it(LOG_INFO, RealUser, Pid, "REPLACE", User);

        poke_daemon();

--- cron-3.0pl1.orig/database.c
+++ cron-3.0pl1/database.c
@@ -78,14 +78,14 @@ load_database(old_db)
         * cached any of the database), we'll see the changes next time.
         */
        if (stat(SPOOL_DIR, &statbuf) < OK) {
-               log_it("CRON", getpid(), "STAT FAILED", SPOOL_DIR);
+               log_it(LOG_WARNING, "CRON", getpid(), "STAT FAILED", SPOOL_DIR);
                statbuf.st_mtime = 0;
        }

        /* track system crontab file
         */
        if (stat(SYSCRONTAB, &syscron_stat) < OK) {
-               log_it("CRON", getpid(), "STAT FAILED", SYSCRONTAB);
+               log_it(LOG_WARNING, "CRON", getpid(), "STAT FAILED", 
SYSCRONTAB);
                syscron_stat.st_mtime = 0;
        }

@@ -94,7 +94,7 @@ load_database(old_db)
         * file check won't
         */
        if (stat(SYSCRONDIR, &syscrond_stat) < OK) {
-               log_it("CRON", getpid(), "STAT FAILED", SYSCRONDIR);
+               log_it(LOG_WARNING, "CRON", getpid(), "STAT FAILED", 
SYSCRONDIR);
                syscrond_stat.st_mtime = 0;
        }

@@ -168,7 +168,7 @@ load_database(old_db)

        /* Read all the package crontabs. */
        if (!(dir = opendir(SYSCRONDIR))) {
-               log_it("CRON", getpid(), "OPENDIR FAILED", SYSCRONDIR);
+               log_it(LOG_WARNING, "CRON", getpid(), "OPENDIR FAILED", 
SYSCRONDIR);
        }

        while (dir != NULL && NULL != (dp = readdir(dir))) {
@@ -209,7 +209,7 @@ load_database(old_db)
         * we fork a lot more often than the mtime of the dir changes.
         */
        if (!(dir = opendir(SPOOL_DIR))) {
-               log_it("CRON", getpid(), "OPENDIR FAILED", SPOOL_DIR);
+               log_it(LOG_WARNING, "CRON", getpid(), "OPENDIR FAILED", 
SPOOL_DIR);
        }

        while (dir != NULL && NULL != (dp = readdir(dir))) {
@@ -323,7 +323,7 @@ process_crontab(uname, fname, tabname, s
                 */
                if (strncmp(fname, "tmp.", 4)) {
                        /* don't log these temporary files */
-                       log_it(fname, getpid(), "ORPHAN", "no passwd entry");
+                       log_it(LOG_NOTICE, fname, getpid(), "ORPHAN", "no passwd 
entry");
                        add_orphan(uname, fname, tabname);
                }
                goto next_crontab;
@@ -334,39 +334,39 @@ process_crontab(uname, fname, tabname, s
                if ((crontab_fd = open(tabname, O_RDONLY|O_NOFOLLOW, 0)) < OK) {
                        /* crontab not accessible?
                         */
-                       log_it(fname, getpid(), "CAN'T OPEN", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "CAN'T OPEN", 
tabname);
                        goto next_crontab;
                }

                if (fstat(crontab_fd, statbuf) < OK) {
-                       log_it(fname, getpid(), "FSTAT FAILED", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "FSTAT FAILED", 
tabname);
                        goto next_crontab;
                }
                /* Check to make sure that the crontab is owned by the correct 
user
                   (or root) */

                if (statbuf->st_uid != pw->pw_uid && statbuf->st_uid != 
ROOT_UID) {
-                       log_it(fname, getpid(), "WRONG FILE OWNER", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "WRONG FILE OWNER", 
tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }

                /* Check to make sure that the crontab is a regular file */
                if (!S_ISREG(statbuf->st_mode)) {
-                       log_it(fname, getpid(), "NOT A REGULAR FILE", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "NOT A REGULAR 
FILE", tabname);
                        goto next_crontab;
                }

                /* Check to make sure that the crontab's permissions are secure 
*/
                if ((statbuf->st_mode & 07777) != 0600) {
-                       log_it(fname, getpid(), "INSECURE MODE (mode 0600 
expected)", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "INSECURE MODE (mode 
0600 expected)", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }

                /* Check to make sure that there are no hardlinks to the 
crontab */
                if (statbuf->st_nlink != 1) {
-                       log_it(fname, getpid(), "NUMBER OF HARD LINKS > 1", 
tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "NUMBER OF HARD LINKS > 
1", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }
@@ -374,11 +374,11 @@ process_crontab(uname, fname, tabname, s
                /* System crontab path. These can be symlinks, but the
                   symlink and the target must be owned by root. */
                if (lstat(tabname, statbuf) < OK) {
-                       log_it(fname, getpid(), "LSTAT FAILED", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "LSTAT FAILED", 
tabname);
                        goto next_crontab;
                }
                if (S_ISLNK(statbuf->st_mode) && statbuf->st_uid != ROOT_UID) {
-                       log_it(fname, getpid(), "WRONG SYMLINK OWNER", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "WRONG SYMLINK 
OWNER", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }
@@ -392,29 +392,29 @@ process_crontab(uname, fname, tabname, s
                         * skip it instead.
                         */
                        if (S_ISLNK(statbuf->st_mode)) {
-                               log_it(fname, getpid(), "CAN'T OPEN SYMLINK", 
tabname);
+                               log_it(LOG_NOTICE, fname, getpid(), "CAN'T OPEN 
SYMLINK", tabname);
                                force_rescan_user(old_db, new_db, fname, 0);
                        } else {
-                               log_it(fname, getpid(), "CAN'T OPEN", tabname);
+                               log_it(LOG_WARNING, fname, getpid(), "CAN'T 
OPEN", tabname);
                        }
                        goto next_crontab;
                }

                if (fstat(crontab_fd, statbuf) < OK) {
-                       log_it(fname, getpid(), "FSTAT FAILED", tabname);
+                       log_it(LOG_WARNING, fname, getpid(), "FSTAT FAILED", 
tabname);
                        goto next_crontab;
                }

                /* Check to make sure that the crontab is owned by root */
                if (statbuf->st_uid != ROOT_UID) {
-                       log_it(fname, getpid(), "WRONG FILE OWNER", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "WRONG FILE OWNER", 
tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }

                /* Check to make sure that the crontab is a regular file */
                if (!S_ISREG(statbuf->st_mode)) {
-                       log_it(fname, getpid(), "NOT A REGULAR FILE", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "NOT A REGULAR 
FILE", tabname);
                        goto next_crontab;
                }

@@ -423,7 +423,7 @@ process_crontab(uname, fname, tabname, s
                 * (mode 0600). An upgrade path could be implemented for 4.1
                 */
                if ((statbuf->st_mode & S_IWGRP) || (statbuf->st_mode & 
S_IWOTH)) {
-                       log_it(fname, getpid(), "INSECURE MODE (group/other 
writable)", tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "INSECURE MODE 
(group/other writable)", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }
@@ -436,7 +436,7 @@ process_crontab(uname, fname, tabname, s

                /* Check to make sure that there are no hardlinks to the 
crontab */
                if (statbuf->st_nlink != 1) {
-                       log_it(fname, getpid(), "NUMBER OF HARD LINKS > 1", 
tabname);
+                       log_it(LOG_NOTICE, fname, getpid(), "NUMBER OF HARD LINKS > 
1", tabname);
                        force_rescan_user(old_db, new_db, fname, 0);
                        goto next_crontab;
                }
@@ -473,7 +473,7 @@ process_crontab(uname, fname, tabname, s
                Debug(DLOAD, (" [delete old data]"))
                unlink_user(old_db, u);
                free_user(u);
-               log_it(fname, getpid(), "RELOAD", tabname);
+               log_it(LOG_INFO, fname, getpid(), "RELOAD", tabname);
        }

        u = load_user(crontab_fd, pw, uname, fname, tabname);
@@ -521,7 +521,7 @@ valid_name(char *filename)
           || regcomp(&tradre, "^[a-z0-9][a-z0-9-]*$", REG_NOSUB)
           || regcomp(&classicalre, "^[a-zA-Z0-9_-]+$",
                      REG_EXTENDED | REG_NOSUB)) {
-          log_it("CRON", getpid(), "REGEX FAILED", "valid_name");
+          log_it(LOG_NOTICE, "CRON", getpid(), "REGEX FAILED", "valid_name");
           (void) exit(ERROR_EXIT);
       }
   }
--- cron-3.0pl1.orig/do_command.c
+++ cron-3.0pl1/do_command.c
@@ -72,7 +72,11 @@ static char **build_env(char **cronenv)

        while ((cronvar = cronenv[count++])) {
                if (!(jobenv = env_set(jobenv, cronvar))) {
-                       syslog(LOG_ERR, "Setting Cron environment variable %s 
failed", cronvar);
+                        char buf[MAX_TEMPSTR];
+                        snprintf(buf, MAX_TEMPSTR,
+                            "Setting Cron environment variable %s failed\n",
+                            cronvar);
+                        log_it(LOG_ERR, "CRON", getpid(), "CRON ENVIROMENT 
FAIL", buf);
                        return NULL;
                }
        }
@@ -97,7 +101,7 @@ do_command(e, u)
         */
        switch (fork()) {
        case -1:
-               log_it("CRON",getpid(),"error","can't fork");
+               log_it(LOG_ERR, "CRON",getpid(),"error","can't fork");
                break;
        case 0:
                /* child process */
@@ -175,7 +179,7 @@ child_process(e, u)
        pipe(stdin_pipe);       /* child's stdin */
        /* child's stdout */
        if ((tmpout = tmpfile()) == NULL) {
-               log_it("CRON", getpid(), "error", "create tmpfile");
+               log_it(LOG_ERR, "CRON", getpid(), "error", "create tmpfile");
                exit(ERROR_EXIT);
        }

@@ -233,7 +237,7 @@ child_process(e, u)
         */
        switch (job_pid = fork()) {
        case -1:
-               log_it("CRON",getpid(),"error","can't fork");
+               log_it(LOG_ERR, "CRON",getpid(),"error","can't fork");
                exit(ERROR_EXIT);
                /*NOTREACHED*/
        case 0:
@@ -247,7 +251,7 @@ child_process(e, u)
                 */
                if ((log_level & CRON_LOG_JOBSTART) && ! (log_level & 
CRON_LOG_JOBPID)) {
                        char *x = mkprints((u_char *)e->cmd, strlen(e->cmd));
-                       log_it(usernm, getpid(), "CMD", x);
+                       log_it(LOG_INFO, usernm, getpid(), "CMD", x);
                        free(x);
                }
                /* nothing to log from now on. close the log files.
@@ -292,7 +296,7 @@ child_process(e, u)
                        char msg[256];
                        snprintf(msg, 256, "do_command:setgid(%lu) failed: %s",
                                (unsigned long) e->gid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
 # if defined(BSD) || defined(POSIX)
@@ -300,7 +304,7 @@ child_process(e, u)
                        char msg[256];
                        snprintf(msg, 256, "do_command:initgroups(%lu) failed: 
%s",
                                (unsigned long) e->gid, strerror(errno));
-                 log_it("CRON",getpid(),"error",msg);
+                 log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                  exit(ERROR_EXIT);
                }
 # endif
@@ -308,7 +312,7 @@ child_process(e, u)
                        char msg[256];
                        snprintf(msg, 256, "do_command:setuid(%lu) failed: %s",
                                (unsigned long) e->uid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
                chdir(env_get("HOME", e->envp));
@@ -359,7 +363,7 @@ child_process(e, u)
                        char logcmd[MAX_COMMAND + 8];
                        snprintf(logcmd, sizeof(logcmd), "[%d] %s", (int) job_pid, 
e->cmd);
                        char *x = mkprints((u_char *)logcmd, strlen(logcmd));
-                       log_it(usernm, getpid(), "CMD", x);
+                       log_it(LOG_INFO, usernm, getpid(), "CMD", x);
                        free(x);
                }
                break;
@@ -468,13 +472,13 @@ child_process(e, u)
                                status = waiter;
                                snprintf(msg, 256, "grandchild #%d failed with exit 
"
                                        "status %d", pid, WEXITSTATUS(waiter));
-                               log_it("CRON", getpid(), "error", msg);
+                               log_it(LOG_ERR, "CRON", getpid(), "error", msg);
                        } else if (WIFSIGNALED(waiter)) {
                                status = waiter;
                                snprintf(msg, 256, "grandchild #%d terminated by 
signal"
                                        " %d%s", pid, WTERMSIG(waiter),
                                        WCOREDUMP(waiter) ? ", dumped core" : 
"");
-                               log_it("CRON", getpid(), "error", msg);
+                               log_it(LOG_ERR, "CRON", getpid(), "error", msg);
                        }
                }
        }
@@ -511,7 +515,7 @@ child_process(e, u)
        if (stat(MAILCMD, &mcsb) != 0) {
                Debug(DPROC|DEXT, ("%s not found, not sending mail\n", MAILCMD))
                if (pos > 0) {
-                       log_it("CRON", getpid(), "info", "No MTA installed, 
discarding output");
+                       log_it(LOG_WARNING, "CRON", getpid(), "info", "No MTA 
installed, discarding output");
                }
                goto mail_finished;
        } else {
@@ -619,11 +623,11 @@ child_process(e, u)
                                "mailed %d byte%s of output "
                                "but got status 0x%04x from MTA\n",
                                bytes, (bytes==1)?"":"s", status);
-               log_it(usernm, getpid(), "MAIL", buf);
+               log_it(LOG_INFO, usernm, getpid(), "MAIL", buf);
        }

        if (ferror(tmpout)) {
-               log_it(usernm, getpid(), "MAIL", "stream error reading output");
+               log_it(LOG_NOTICE, usernm, getpid(), "MAIL", "stream error reading 
output");
        }

 mail_finished:
@@ -638,7 +642,7 @@ mail_finished:
                } else {
                        x = mkprints((u_char *)e->cmd, strlen(e->cmd));
                }
-               log_it(usernm, job_pid, "END", x);
+               log_it(LOG_INFO, usernm, job_pid, "END", x);
                free(x);
        }

@@ -696,7 +700,7 @@ static int safe_p(const char *usernm, co
                if (isascii(ch) && isprint(ch) &&
                        (isalnum(ch) || (!first && strchr(safe_delim, ch))))
                        continue;
-               log_it(usernm, getpid(), "UNSAFE MAIL", s);
+               log_it(LOG_WARNING, usernm, getpid(), "UNSAFE MAIL", s);
                return (FALSE);
        }
        return (TRUE);
--- cron-3.0pl1.orig/entry.c
+++ cron-3.0pl1/entry.c
@@ -109,7 +109,7 @@ load_entry(file, error_func, pw, envp)

        e = (entry *) calloc(sizeof(entry), sizeof(char));
        if (e == NULL) {
-               log_it("CRON", getpid(), "OOM", "Out of memory parsing 
crontab");
+               log_it(LOG_ERR, "CRON", getpid(), "OOM", "Out of memory parsing 
crontab");
                return NULL;
        }

--- cron-3.0pl1.orig/misc.c
+++ cron-3.0pl1/misc.c
@@ -303,7 +303,7 @@ acquire_daemonlock(closeflag)
                        snprintf(buf, MAX_TEMPSTR, "can't open or create %s: 
%s",
                                pidfile, strerror(errno));
                        fprintf(stderr, "%s: %s\n", ProgramName, buf);
-                       log_it("CRON", getpid(), "DEATH", buf);
+                       log_it(LOG_ERR, "CRON", getpid(), "DEATH", buf);
                        exit(ERROR_EXIT);
                }

@@ -314,11 +314,11 @@ acquire_daemonlock(closeflag)
                        snprintf(buf, MAX_TEMPSTR, "can't lock %s, otherpid may be 
%d: %s",
                                pidfile, otherpid, strerror(save_errno));
                        fprintf(stderr, "%s: %s\n", ProgramName, buf);
-                       log_it("CRON", getpid(), "DEATH", buf);
+                       log_it(LOG_ERR, "CRON", getpid(), "DEATH", buf);
                        exit(ERROR_EXIT);
                }
                snprintf(buf, MAX_TEMPSTR, "pidfile fd = %d", fd);
-               log_it("CRON", getpid(), "INFO", buf);
+               log_it(LOG_INFO, "CRON", getpid(), "INFO", buf);
                (void) fcntl(fd, F_SETFD, 1);
        }

@@ -523,7 +523,8 @@ allowed(username)


 void
-log_it(username, xpid, event, detail)
+log_it(priority, username, xpid, event, detail)
+       int priority;
        char    *username;
        int     xpid;
        char    *event;
@@ -531,6 +532,39 @@ log_it(username, xpid, event, detail)
 {
        PID_T                   pid = xpid;
 #if defined(LOG_FILE)
+
+    /* Logging priority parsing */
+    char    *prio;
+    switch(priority){
+        case LOG_EMERG:
+            prio = "EMERGENCY: ";
+            break;
+        case LOG_ALERT:
+            prio = "ALERT: ";
+            break;
+        case LOG_CRIT:
+            prio = "CRITICAL: ";
+            break;
+        case LOG_ERR:
+            prio = "ERROR: ";
+            break;
+        case LOG_WARNING:
+            prio = "WARNING: ";
+            break;
+        case LOG_NOTICE:
+            prio = "NOTICE: ";
+            break;
+        case LOG_INFO:
+            prio = "INFO: ";
+            break;
+        case LOG_DEBUG:
+            prio = "DEBUG: ";
+            break;
+        default:
+            prio = "INFO: ";
+            break;
+    }
+
        char                    *msg;
        TIME_T                  now = time((TIME_T) 0);
        register struct tm      *t = localtime(&now);
@@ -540,7 +574,7 @@ log_it(username, xpid, event, detail)
 #if defined(LOG_FILE)
        /* we assume that MAX_TEMPSTR will hold the date, time, &punctuation.
         */
-       msg_size = strlen(username) + strlen(event) + strlen(detail) + 
MAX_TEMPSTR;
+       msg_size = strlen(prio) + strlen(username) + strlen(event) + 
strlen(detail) + MAX_TEMPSTR;
        msg = malloc(msg_size);
        if (msg == NULL) {
                /* damn, out of mem and we did not test that before... */
@@ -562,8 +596,8 @@ log_it(username, xpid, event, detail)
         * everything out in one chunk and this has to be atomically appended
         * to the log file.
         */
-       snprintf(msg, msg_size, "%s (%02d/%02d-%02d:%02d:%02d-%d) %s (%s)\n",
-               username,
+       snprintf(msg, msg_size, "%s%s (%02d/%02d-%02d:%02d:%02d-%d) %s (%s)\n",
+               prio, username,
                t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, pid,
                event, detail);

@@ -586,14 +620,14 @@ log_it(username, xpid, event, detail)
        openlog(ProgramName, LOG_PID);
 # endif

-       syslog(LOG_INFO, "(%s) %s (%s)", username, event, detail);
+       syslog(priority, "(%s) %s (%s)", username, event, detail);

 #endif /*SYSLOG*/

 #if DEBUGGING
        if (DebugFlags) {
-               fprintf(stderr, "log_it: (%s %d) %s (%s)\n",
-                       username, xpid, event, detail);
+               fprintf(stderr, "log_it: priority %d (%s %d) %s (%s)\n",
+                       priority, username, xpid, event, detail);
        }
 #endif
 }
--- cron-3.0pl1.orig/popen.c
+++ cron-3.0pl1/popen.c
@@ -128,7 +128,7 @@ cron_popen(program, type, e)
                        char msg[256];
                        snprintf(msg, 256, "popen:setgid(%lu) failed: %s",
                                (unsigned long) e->gid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
 # if defined(BSD) || defined(POSIX)
@@ -136,7 +136,7 @@ cron_popen(program, type, e)
                        char msg[256];
                        snprintf(msg, 256, "popen:initgroups(%lu) failed: %s",
                                (unsigned long) e->gid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
 # endif
@@ -144,7 +144,7 @@ cron_popen(program, type, e)
                        char msg[256];
                        snprintf(msg, 256, "popen: setuid(%lu) failed: %s",
                                (unsigned long) e->uid, strerror(errno));
-                       log_it("CRON",getpid(),"error",msg);
+                       log_it(LOG_ERR, "CRON",getpid(),"error",msg);
                        exit(ERROR_EXIT);
                }
                chdir(env_get("HOME", e->envp));
--- cron-3.0pl1.orig/user.c
+++ cron-3.0pl1/user.c
@@ -23,7 +23,9 @@ static char rcsid[] = "$Id: user.c,v 2.8
  */


+#if defined(SYSLOG)
 #include <syslog.h>
+#endif
 #include <string.h>
 #include "cron.h"

@@ -46,20 +48,20 @@ static int get_security_context(char *na
        int i;

        if (getcon(&current_con)) {
-               log_it(name, getpid(), "Can't get current context", tabname);
+               log_it(LOG_ERR, name, getpid(), "Can't get current context", 
tabname);
                return -1;
        }

        if (name != NULL) {
                if (getseuserbyname(name, &seuser, &level)) {
-                       log_it(name, getpid(), "getseuserbyname FAILED", 
tabname);
+                       log_it(LOG_ERR, name, getpid(), "getseuserbyname 
FAILED", tabname);
                        freecon(current_con);
                        return (security_getenforce() > 0);
                }
        } else {
                context_t temp_con = context_new(current_con);
                if (temp_con == NULL) {
-                       log_it(name, getpid(), "context_new FAILED", tabname);
+                       log_it(LOG_ERR, name, getpid(), "context_new FAILED", 
tabname);
                        freecon(current_con);
                        return (security_getenforce() > 0);
                }
@@ -74,10 +76,10 @@ static int get_security_context(char *na
        free(level);
        if (list_count == -1) {
                if (security_getenforce() > 0) {
-                       log_it(name, getpid(), "No SELinux security context", 
tabname);
+                       log_it(LOG_ERR, name, getpid(), "No SELinux security 
context", tabname);
                        return -1;
                } else {
-                       log_it(name, getpid(),
+                       log_it(LOG_NOTICE, name, getpid(),
                                "No security context but SELinux in permissive 
mode,"
                                " continuing", tabname);
                        return 0;
@@ -86,11 +88,11 @@ static int get_security_context(char *na

        if (fgetfilecon(crontab_fd, &file_context) < OK) {
                if (security_getenforce() > 0) {
-                       log_it(name, getpid(), "getfilecon FAILED", tabname);
+                       log_it(LOG_ERR, name, getpid(), "getfilecon FAILED", 
tabname);
                        freeconary(context_list);
                        return -1;
                } else {
-                       log_it(name, getpid(), "getfilecon FAILED but SELinux in 
"
+                       log_it(LOG_NOTICE, name, getpid(), "getfilecon FAILED but 
SELinux in "
                                "permissive mode, continuing", tabname);
                        *rcontext = strdup(context_list[0]);
                        freeconary(context_list);
@@ -108,7 +110,7 @@ static int get_security_context(char *na

        security_class_t tclass = string_to_security_class("file");
        if (!tclass) {
-               log_it(name, getpid(), "Failed to translate security class 
file", tabname);
+               log_it(LOG_ERR, name, getpid(), "Failed to translate security class 
file", tabname);
                freeconary(context_list);
                if (security_deny_unknown() == 0) {
                        return 0;
@@ -119,7 +121,7 @@ static int get_security_context(char *na

        access_vector_t bit = string_to_av_perm(tclass, "entrypoint");
        if (!bit) {
-               log_it(name, getpid(), "Failed to translate av perm 
entrypoint", tabname);
+               log_it(LOG_ERR, name, getpid(), "Failed to translate av perm 
entrypoint", tabname);
                freeconary(context_list);
                if (security_deny_unknown() == 0) {
                        return 0;
@@ -143,11 +145,11 @@ static int get_security_context(char *na
        }
        freecon(file_context);
        if (security_getenforce() > 0) {
-               log_it(name, getpid(), "ENTRYPOINT FAILED", tabname);
+               log_it(LOG_ERR, name, getpid(), "ENTRYPOINT FAILED", tabname);
                freeconary(context_list);
                return -1;
        } else {
-               log_it(name, getpid(), "ENTRYPOINT FAILED but SELinux in permissive 
mode, continuing", tabname);
+               log_it(LOG_NOTICE, name, getpid(), "ENTRYPOINT FAILED but SELinux in 
permissive mode, continuing", tabname);
                *rcontext = strdup(context_list[0]);
                freeconary(context_list);
        }
@@ -168,14 +170,25 @@ crontab_error(msg)
        const char *fn;
        /* Figure out the file name from the username */
        if (0 == strcmp(err_user, "*system*")) {
-               syslog(LOG_ERR|LOG_CRON, "Error: %s; while reading %s", msg, 
SYSCRONTAB);
+               char buf[MAX_TEMPSTR];
+               snprintf(buf, MAX_TEMPSTR,
+                   "Error: %s; while reading %s",
+                   msg, SYSCRONTAB);
+               log_it(LOG_ERR, err_user, getpid(), "ERROR", buf);
        } else if (0 == strncmp(err_user,"*system*",8)) {
                fn = err_user+8;
-               syslog(LOG_ERR|LOG_CRON, "Error: %s; while reading %s/%s", msg,
-               SYSCRONDIR,fn);
+               char buf[MAX_TEMPSTR];
+               snprintf(buf, MAX_TEMPSTR,
+                   "Error: %s; while reading %s/%s",
+                   msg, SYSCRONDIR, fn);
+               log_it(LOG_ERR, err_user, getpid(), "ERROR", buf);
+
        } else {
-               syslog(LOG_ERR|LOG_CRON, "Error: %s; while reading crontab for user 
%s",
-                       msg, err_user);
+               char buf[MAX_TEMPSTR];
+               snprintf(buf, MAX_TEMPSTR,
+                   "Error: %s; while reading crontab for user %s",
+                   msg, err_user);
+               log_it(LOG_ERR, err_user, getpid(), "ERROR", buf);
        }
 }

@@ -274,7 +287,7 @@ load_user(crontab_fd, pw, uname, fname,
                         * newline, so we bail out
                         */
                        if (envstr[0] != '\0') {
-                               log_it(u->name, getpid(), "ERROR", "Missing "
+                               log_it(LOG_WARNING, u->name, getpid(), "ERROR", 
"Missing "
                                "newline before EOF, this crontab file will be "
                                "ignored");
                                free_user(u);
@@ -290,7 +303,7 @@ load_user(crontab_fd, pw, uname, fname,
                                u->crontab = e;
                        } else {
                                /* stop processing on syntax error */
-                               log_it(u->name, getpid(), "ERROR", "Syntax "
+                               log_it(LOG_WARNING, u->name, getpid(), "ERROR", 
"Syntax "
                                        "error, this crontab file will be "
                                        "ignored");
                                free_user(u);
@@ -314,7 +327,7 @@ load_user(crontab_fd, pw, uname, fname,
        } while (status >= OK && LineNumber < MAX_TAB_LINES + NHEADER_LINES + 
2);

        if (LineNumber >= MAX_TAB_LINES + NHEADER_LINES + 2) {
-               log_it(fname, getpid(), "ERROR", "crontab must not be longer "
+               log_it(LOG_WARNING, fname, getpid(), "ERROR", "crontab must not be 
longer "
                                "than " Stringify(MAX_TAB_LINES) " lines, "
                                "this crontab file will be ignored");
                free_user(u);


--
Georges KHAZNADAR et Jocelyne FOURNIER
22 rue des mouettes, 59240 Dunkerque France.
Téléphone +33 (0)3 28 29 17 70



Reply via email to