Hello community,

here is the log from the commit of package cronie for openSUSE:Factory checked 
in at 2017-04-07 13:52:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cronie (Old)
 and      /work/SRC/openSUSE:Factory/.cronie.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cronie"

Fri Apr  7 13:52:34 2017 rev:63 rq:483286 version:unknown

Changes:
--------
--- /work/SRC/openSUSE:Factory/cronie/cronie.changes    2016-10-14 
03:37:59.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.cronie.new/cronie.changes       2017-04-07 
13:52:37.001326334 +0200
@@ -1,0 +2,24 @@
+Tue Mar 28 09:18:55 UTC 2017 - [email protected]
+
+- update to 1.5.1
+  * crontab: Use temporary file name that is ignored by crond.
+  * crond: Inherit PATH from the crond environment if -P option
+    is used.
+  * crond: Remove hardcoded "system_u" SELinux user, use the
+    SELinux user
+    of the running crond.
+  * anacron: Small cleanups and fixes.
+  * crond: Fix longstanding race condition on repeated crontab
+    modification.
+- refresh cronie-pam_config.diff 
+- get rid of %{name} macros in the patch names
+- use %{ext_man} macro for anacron man pages
+- fedorahosted.org was retired on March 1st, 2017
+  * update Url and Source address
+
+-------------------------------------------------------------------
+Thu Mar 23 15:14:29 UTC 2017 - [email protected]
+
+- cleanup with spec-cleaner
+
+-------------------------------------------------------------------

Old:
----
  cronie-1.5.0.tar.gz

New:
----
  cronie-1.5.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cronie.spec ++++++
--- /var/tmp/diff_new_pack.rUcJg2/_old  2017-04-07 13:52:37.989186796 +0200
+++ /var/tmp/diff_new_pack.rUcJg2/_new  2017-04-07 13:52:37.989186796 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package cronie
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,13 +18,14 @@
 
 %define cron_configs %{_sysconfdir}/pam.d/crond %{_sysconfdir}/crontab 
%{_sysconfdir}/cron.deny
 Name:           cronie
-Version:        1.5.0
+Version:        1.5.1
 Release:        0
 Summary:        Cron Daemon
 License:        BSD-3-Clause and GPL-2.0 and MIT
 Group:          System/Daemons
-Url:            https://fedorahosted.org/cronie/
-Source0:        
https://fedorahosted.org/releases/c/r/%{name}/%{name}-%{version}.tar.gz
+Url:            https://github.com/cronie-crond/cronie
+# temporary location - new releases will be stored on GitHub
+Source0:        
http://people.redhat.com/tmraz/%{name}/%{name}-%{version}.tar.gz
 Source2:        run-crons
 Source3:        sample.root
 Source4:        deny.sample
@@ -33,13 +34,13 @@
 Source8:        cron.service
 Source9:        sysconfig.cron
 # PATCH-FEATURE-OPENSUSE cronie-pam_config.diff added pam config file from old 
cron
-Patch3:         %{name}-pam_config.diff
+Patch3:         cronie-pam_config.diff
 # openSUSE set NHEADER_LINES to 3 - old openSUSE cron put three lines of 
comments
 # in top of crontab file, so we want to hide this junk comments if user edit
 # crontab file with crontab -e command, patch grabbed from old openSUSE cron
-Patch4:         %{name}-nheader_lines.diff
+Patch4:         cronie-nheader_lines.diff
 # we use cron.pid instead of crond.pid
-Patch5:         %{name}-crond_pid.diff
+Patch5:         cronie-crond_pid.diff
 # PATCH-FIX-UPSTREAM mention logging disabling for a command in man
 Patch7:         cronie-1.4.7-disable_logging.patch
 # PATCH-FIX-UPSTREAM use run-crons instead of run-parts for anacron 
(bnc#689494)
@@ -52,6 +53,7 @@
 BuildRequires:  audit-devel
 BuildRequires:  libselinux-devel
 BuildRequires:  pam-devel
+BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(systemd)
 Requires(post): %fillup_prereq
 Requires(post): permissions
@@ -120,7 +122,7 @@
 make %{?_smp_mflags}
 
 %install
-make DESTDIR=%{buildroot} install %{?_smp_mflags}
+%make_install
 mkdir -p -v %{buildroot}%{_localstatedir}/spool/cron/{tabs,lastrun}
 mkdir -p -v %{buildroot}%{_sysconfdir}/cron.{d,hourly,daily,weekly,monthly}
 install -v -m 600 %{SOURCE3} %{buildroot}%{_sysconfdir}/crontab
@@ -192,10 +194,10 @@
 %config %{_sysconfdir}/pam.d/crond
 %verify(not mode) %config(noreplace) %{_sysconfdir}/crontab
 %config(noreplace) %{_sysconfdir}/cron.deny
-%{_mandir}/man1/crontab.1.gz
-%{_mandir}/man5/crontab.5.gz
-%{_mandir}/man8/cron.8.gz
-%{_mandir}/man8/crond.8.gz
+%{_mandir}/man1/crontab.1%{ext_man}
+%{_mandir}/man5/crontab.5%{ext_man}
+%{_mandir}/man8/cron.8%{ext_man}
+%{_mandir}/man8/crond.8%{ext_man}
 %verify(not mode) %attr (4750,root,trusted) %{_bindir}/crontab
 %attr (755,root,root) %{_sbindir}/cron
 %{_sbindir}/rccron
@@ -212,8 +214,8 @@
 %ghost %verify(not md5 size mtime) %{_localstatedir}/spool/anacron/cron.daily
 %ghost %verify(not md5 size mtime) %{_localstatedir}/spool/anacron/cron.weekly
 %ghost %verify(not md5 size mtime) %{_localstatedir}/spool/anacron/cron.monthly
-%{_mandir}/man5/anacrontab.*
-%{_mandir}/man8/anacron.*
+%{_mandir}/man5/anacrontab.5%{ext_man}
+%{_mandir}/man8/anacron.8%{ext_man}
 
 %files -n cron
 %defattr(-,root,root,-)

++++++ cronie-1.5.0.tar.gz -> cronie-1.5.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/ChangeLog new/cronie-1.5.1/ChangeLog
--- old/cronie-1.5.0/ChangeLog  2015-05-28 15:54:01.000000000 +0200
+++ new/cronie-1.5.1/ChangeLog  2016-06-23 19:20:08.000000000 +0200
@@ -1,3 +1,79 @@
+2016-06-23  Tomas Mraz <[email protected]>
+
+       * Remove unneeded obsolete SELinux includes.
+
+2016-06-23  Tomas Mraz <[email protected]>
+
+       * Rename timeval time to tv so time function can be used.
+
+2016-06-23  Tomas Mraz <[email protected]>
+
+       * Fix longstanding race condition on crontab modification.
+         If crontab is modified twice at the same second the crond reads it
+         which means the timestamp will not change, the latest content will
+         never be read.
+
+2016-06-10  Tomas Mraz <[email protected]>
+
+       * Fix misleading comment in pam configuration file.
+
+2016-05-13  Tomas Mraz <[email protected]>
+
+       * anacron: use mkstemp() instead of tempnam()
+         Although the use of tempnam() seemed to be safeguarded
+         better to not use it at all.
+
+2016-05-13  Tomas Mraz <[email protected]>
+
+       * anacron: Drop potentially unsafe umask setting.
+
+2016-05-13  Tomas Mraz <[email protected]>
+
+       * anacron: Do not try to mail to empty address.
+
+2016-04-25  Tomas Mraz <[email protected]>
+
+       * Clarify the crontab(1) documentation.
+
+2016-04-23  Gary Tierney <[email protected]>
+
+       * Remove hardcoded "system_u" SELinux user
+         This gets rid of the hardcoded reference to the ref-policy system_u 
user
+         and instead relies on the user that cronie is currently running as.
+
+2016-04-25  Tomas Mraz <[email protected]>
+
+       * Clarify return value.
+
+2016-03-15  Tomas Mraz <[email protected]>
+
+       * Correct instructions for disabling Anacron.
+
+2015-11-07  Ville Skyttä <[email protected]>
+
+       * Man page syntax fixes
+
+2015-11-05  Robert Byrnes <[email protected]>
+
+       * Inherit PATH from the crond environment if -P option is used.
+
+2015-07-13  Tomas Mraz <[email protected]>
+
+       * In crontab command use a temporary filename that is ignored by crond.
+
+2015-05-28  Tomas Mraz <[email protected]>
+
+       * Add *.patch and *.orig to .gitignore
+
+2015-05-28  Tomas Mraz <[email protected]>
+
+       * Add compile to .gitignore.
+
+2015-05-28  Tomas Mraz <[email protected]>
+
+       * Release new version 1.5.0
+         properly create dist tarball even with anacron and PAM disabled
+
 2015-05-28  Tomas Mraz <[email protected]>
 
        * Pass the job environment also when executing the sendmail.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/Makefile.in new/cronie-1.5.1/Makefile.in
--- old/cronie-1.5.0/Makefile.in        2015-05-28 16:07:28.000000000 +0200
+++ new/cronie-1.5.1/Makefile.in        2016-06-23 19:20:59.000000000 +0200
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,16 +91,13 @@
 host_triplet = @host@
 @PAM_FALSE@am__append_1 = pam/crond
 subdir = .
-DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
-       $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/configure $(am__configure_deps) \
-       $(srcdir)/config.h.in $(am__dist_pam_DATA_DIST) \
-       $(dist_noinst_HEADERS) COPYING compile config.guess config.sub \
-       depcomp install-sh missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+       $(am__configure_deps) $(am__dist_pam_DATA_DIST) \
+       $(dist_noinst_HEADERS) $(am__DIST_COMMON)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
@@ -185,6 +192,9 @@
 CTAGS = ctags
 CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
+       COPYING ChangeLog INSTALL NEWS README compile config.guess \
+       config.sub depcomp install-sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -363,7 +373,6 @@
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -606,15 +615,15 @@
        $(am__post_remove_distdir)
 
 dist-tarZ: distdir
-       @echo WARNING: "Support for shar distribution archives is" \
-                      "deprecated." >&2
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
        @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__post_remove_distdir)
 
 dist-shar: distdir
-       @echo WARNING: "Support for distribution archives compressed with" \
-                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
        @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
        $(am__post_remove_distdir)
@@ -650,17 +659,17 @@
        esac
        chmod -R a-w $(distdir)
        chmod u+w $(distdir)
-       mkdir $(distdir)/_build $(distdir)/_inst
+       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
        chmod a-w $(distdir)
        test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 
's,^[^:\\/]:[\\/],/,'` \
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
          && am__cwd=`pwd` \
-         && $(am__cd) $(distdir)/_build \
-         && ../configure \
+         && $(am__cd) $(distdir)/_build/sub \
+         && ../../configure \
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
-           --srcdir=.. --prefix="$$dc_install_base" \
+           --srcdir=../.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -838,6 +847,8 @@
        mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
        tags-am uninstall uninstall-am uninstall-dist_pamDATA
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/NEWS new/cronie-1.5.1/NEWS
--- old/cronie-1.5.0/NEWS       2015-05-28 15:47:07.000000000 +0200
+++ new/cronie-1.5.1/NEWS       2016-06-23 19:18:36.000000000 +0200
@@ -1,5 +1,14 @@
 cronie NEWS -- history of user-visible changes.
 
+Release 1.5.1
+
+* crontab: Use temporary file name that is ignored by crond.
+* crond: Inherit PATH from the crond environment if -P option is used.
+* crond: Remove hardcoded "system_u" SELinux user, use the SELinux user
+  of the running crond.
+* anacron: Small cleanups and fixes.
+* crond: Fix longstanding race condition on repeated crontab modification.
+
 Release 1.5.0
 
 * First release with NEWS. :)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/aclocal.m4 new/cronie-1.5.1/aclocal.m4
--- old/cronie-1.5.0/aclocal.m4 2015-05-28 15:56:17.000000000 +0200
+++ new/cronie-1.5.1/aclocal.m4 2016-06-23 19:20:58.000000000 +0200
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically 
'autoreconf'.])])
 
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.15'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.14.1], [],
+m4_if([$1], [1.15], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,14 +51,14 @@
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.15])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -103,15 +103,14 @@
 # configured tree to be moved without reconfiguration.
 
 AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 ])
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -142,7 +141,7 @@
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -333,7 +332,7 @@
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -409,7 +408,7 @@
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -499,8 +498,8 @@
 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -573,7 +572,11 @@
 END
     AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
   fi
-fi])
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
@@ -602,7 +605,7 @@
 done
 echo "timestamp for $_am_arg" 
>`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -613,7 +616,7 @@
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\    *)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -623,7 +626,7 @@
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -644,7 +647,7 @@
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -694,7 +697,7 @@
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -733,7 +736,7 @@
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -762,7 +765,7 @@
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -809,7 +812,7 @@
 # For backward compatibility.
 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -828,7 +831,7 @@
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -909,7 +912,7 @@
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -969,7 +972,7 @@
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -997,7 +1000,7 @@
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1016,7 +1019,7 @@
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/anacron/Makefile.in 
new/cronie-1.5.1/anacron/Makefile.in
--- old/cronie-1.5.0/anacron/Makefile.in        2015-05-28 16:06:18.000000000 
+0200
+++ new/cronie-1.5.1/anacron/Makefile.in        2016-06-23 19:20:59.000000000 
+0200
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,12 +90,11 @@
 host_triplet = @host@
 @ANACRON_TRUE@sbin_PROGRAMS = anacron$(EXEEXT)
 subdir = anacron
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -156,6 +165,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -291,7 +301,6 @@
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu anacron/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --gnu anacron/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -590,6 +599,8 @@
        mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
        tags tags-am uninstall uninstall-am uninstall-sbinPROGRAMS
 
+.PRECIOUS: Makefile
+
 
 # This header contains all the paths.
 # If they are configurable, they are declared in configure script.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/anacron/main.c 
new/cronie-1.5.1/anacron/main.c
--- old/cronie-1.5.0/anacron/main.c     2013-01-17 14:07:40.000000000 +0100
+++ new/cronie-1.5.1/anacron/main.c     2016-05-13 14:39:45.000000000 +0200
@@ -51,7 +51,6 @@
 int job_nargs;                                 /* number of these */
 char *defarg = "*";
 int in_background;                             /* are we in the background? */
-int old_umask;                                 /* umask when started */
 sigset_t old_sigmask;                          /* signal mask when started */
 
 job_rec *first_job_rec;
@@ -470,8 +469,6 @@
 
     if (chdir(spooldir)) die_e("Can't chdir to %s", spooldir );
 
-    old_umask = umask(0);
-
     if (sigprocmask(0, NULL, &old_sigmask)) die_e("sigset error");
 
     if (fclose(stdin)) die_e("Can't close stdin");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/anacron/runjob.c 
new/cronie-1.5.1/anacron/runjob.c
--- old/cronie-1.5.0/anacron/runjob.c   2013-01-17 14:04:09.000000000 +0100
+++ new/cronie-1.5.1/anacron/runjob.c   2016-05-13 15:25:20.000000000 +0200
@@ -33,6 +33,7 @@
 #include <signal.h>
 #include <stdio.h>
 #include <string.h>
+#include <limits.h>
 #include "global.h"
 
 #include <langinfo.h>
@@ -41,30 +42,28 @@
 temp_file(job_rec *jr)
 /* Open a temporary file and return its file descriptor */
 {
-    const int max_retries = 50;
-    char *name;
+    char *dir;
+    char template[PATH_MAX+1];
     int fdin = -1;
-    int fdout, i;
+    int fdout;
+    int len;
 
-    i = 0;
-    name = NULL;
-    do
-    {
-       i++;
-       free(name);
-       name = tempnam(NULL, NULL);
-       if (name == NULL) die("Can't find a unique temporary filename");
-       fdout = open(name, O_WRONLY | O_CREAT | O_EXCL | O_APPEND,
-                               S_IRUSR | S_IWUSR);
-       if ( fdout != -1 )
-               fdin = open(name, O_RDONLY, S_IRUSR | S_IWUSR);
-       /* I'm not sure we actually need to be so persistent here */
-    } while (fdout == -1 && errno == EEXIST && i < max_retries);
-    
+    dir = getenv("TMPDIR");
+    if (dir == NULL || *dir == '\0')
+       dir = P_tmpdir;
+
+    len = snprintf(template, sizeof(template), "%s/$anacronXXXXXX", dir);
+    if (len >= sizeof(template))
+       die_e("TMPDIR too long");
+
+    fdout = mkstemp(template);
     if (fdout == -1) die_e("Can't open temporary file for writing");
+
+    fdin = open(template, O_RDONLY, S_IRUSR | S_IWUSR);
     if (fdin == -1) die_e("Can't open temporary file for reading");
-    if (unlink(name)) die_e("Can't unlink temporary file");
-    free(name);
+
+    if (unlink(template)) die_e("Can't unlink temporary file");
+
     fcntl(fdout, F_SETFD, FD_CLOEXEC);    /* set close-on-exec flag */
     fcntl(fdin, F_SETFD, FD_CLOEXEC);    /* set close-on-exec flag */
 
@@ -88,10 +87,18 @@
 username(void)
 {
     struct passwd *ps;
+    static char *user;
+
+    if (user)
+       return user;
 
     ps = getpwuid(geteuid());
-    if (ps == NULL) die_e("getpwuid() error");
-    return ps->pw_name;
+    if (ps == NULL || ps->pw_name == NULL) die_e("getpwuid() error");
+
+    user = strdup(ps->pw_name);
+    if (user == NULL) die_e("memory allocation error");
+
+    return user;
 }
 
 static void
@@ -130,7 +137,6 @@
     in_background = 0;  /* now, errors will be mailed to the user */
     if (chdir("/")) die_e("Can't chdir to '/'");
 
-    umask(old_umask);
     if (sigprocmask(SIG_SETMASK, &old_sigmask, NULL))
        die_e("sigprocmask error");
     xcloselog();
@@ -167,6 +173,12 @@
     pid_t pid;
     struct stat buf;
 
+    if (jr->mailto == NULL)
+    {
+       explain("Empty MAILTO set, not mailing output");
+       return;
+    }
+
     /* Check that we have a way of sending mail. */
     if(stat(SENDMAIL, &buf))
     {
@@ -183,7 +195,6 @@
        xclose(STDIN_FILENO);
        if (dup2(jr->input_fd, STDIN_FILENO) != 0) die_e("Can't dup2()");
        if (lseek(STDIN_FILENO, 0, SEEK_SET) != 0) die_e("Can't lseek()");
-       umask(old_umask);
        if (sigprocmask(SIG_SETMASK, &old_sigmask, NULL))
            die_e("sigprocmask error");
        xcloselog();
@@ -245,14 +256,12 @@
     }
 
     setup_env(jr);
-   
+
     /* Get the destination email address if set, or current user otherwise */
     mailto = getenv("MAILTO");
 
-    if (mailto)
-           jr->mailto = mailto;
-    else
-           jr->mailto = username ();
+    if (mailto == NULL)
+       mailto = username();
 
     /* create temporary file for stdout and stderr of the job */
     temp_file(jr); fd = jr->output_fd;
@@ -262,11 +271,7 @@
     xwrite(fd, username());
     xwrite(fd, ">\n");
     xwrite(fd, "To: ");
-    if (mailto) {
-       xwrite(fd, mailto);
-    } else {
-       xwrite(fd, username());
-    }
+    xwrite(fd, mailto);
     xwrite(fd, "\n");
     xwrite(fd, "Content-Type: text/plain; charset=\"");
     xwrite(fd, nl_langinfo(CODESET));
@@ -277,6 +282,12 @@
     xwrite(fd, hostname);
     xwrite(fd, "\n\n");
 
+    if (*mailto == '\0')
+       jr->mailto = NULL;
+    else
+       /* ugly but works without strdup() */
+       jr->mailto = mailto;
+
     jr->mail_header_size = file_size(fd);
 
     pid = xfork();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/configure new/cronie-1.5.1/configure
--- old/cronie-1.5.0/configure  2015-05-28 15:56:18.000000000 +0200
+++ new/cronie-1.5.1/configure  2016-06-23 19:20:59.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for cronie 1.5.0.
+# Generated by GNU Autoconf 2.69 for cronie 1.5.1.
 #
 # Report bugs to <[email protected],[email protected]>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='cronie'
 PACKAGE_TARNAME='cronie'
-PACKAGE_VERSION='1.5.0'
-PACKAGE_STRING='cronie 1.5.0'
+PACKAGE_VERSION='1.5.1'
+PACKAGE_STRING='cronie 1.5.1'
 PACKAGE_BUGREPORT='[email protected],[email protected]'
 PACKAGE_URL=''
 
@@ -1307,7 +1307,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures cronie 1.5.0 to adapt to many kinds of systems.
+\`configure' configures cronie 1.5.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1377,7 +1377,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of cronie 1.5.0:";;
+     short | recursive ) echo "Configuration of cronie 1.5.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1497,7 +1497,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-cronie configure 1.5.0
+cronie configure 1.5.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1977,7 +1977,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by cronie $as_me 1.5.0, which was
+It was created by cronie $as_me 1.5.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2329,7 +2329,7 @@
 
 
 
-am__api_version='1.14'
+am__api_version='1.15'
 
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -2530,8 +2530,8 @@
 ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 if test x"${MISSING+set}" != xset; then
   case $am_aux_dir in
@@ -2550,7 +2550,7 @@
 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\    *)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -2844,7 +2844,7 @@
 
 # Define the identity of the package.
  PACKAGE='cronie'
- VERSION='1.5.0'
+ VERSION='1.5.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2878,8 +2878,8 @@
 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 mkdir_p='$(MKDIR_P)'
 
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
@@ -2937,6 +2937,7 @@
   fi
 fi
 
+
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
   as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
@@ -5922,7 +5923,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by cronie $as_me 1.5.0, which was
+This file was extended by cronie $as_me 1.5.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5988,7 +5989,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-cronie config.status 1.5.0
+cronie config.status 1.5.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/configure.ac 
new/cronie-1.5.1/configure.ac
--- old/cronie-1.5.0/configure.ac       2015-05-28 15:47:34.000000000 +0200
+++ new/cronie-1.5.1/configure.ac       2016-06-23 19:18:36.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([cronie],[1.5.0],[[email protected],[email protected]])
+AC_INIT([cronie],[1.5.1],[[email protected],[email protected]])
 AC_CONFIG_HEADER([config.h])
 AC_PREREQ(2.60)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/man/Makefile.in 
new/cronie-1.5.1/man/Makefile.in
--- old/cronie-1.5.0/man/Makefile.in    2015-05-28 16:13:01.000000000 +0200
+++ new/cronie-1.5.1/man/Makefile.in    2016-06-23 19:20:59.000000000 +0200
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,12 +89,11 @@
 host_triplet = @host@
 @ANACRON_TRUE@am__append_1 = $(EXTRA_DIST)
 subdir = man
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(dist_man_MANS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -143,6 +152,7 @@
 NROFF = nroff
 MANS = $(dist_man_MANS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -268,7 +278,6 @@
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --gnu man/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -572,6 +581,8 @@
        uninstall uninstall-am uninstall-man uninstall-man1 \
        uninstall-man5 uninstall-man8
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/man/anacrontab.5 
new/cronie-1.5.1/man/anacrontab.5
--- old/cronie-1.5.0/man/anacrontab.5   2012-11-26 17:29:32.000000000 +0100
+++ new/cronie-1.5.1/man/anacrontab.5   2016-04-25 11:08:44.000000000 +0200
@@ -71,13 +71,11 @@
 .PP
 You can continue a line onto the next line by adding a '\\' at the end of it.
 .PP
-In case you want to disable Anacron, add the
+In case you want to disable Anacron, add a line with
 .I 0anacron
-cron job (which is a part of
-.BR crontab (1))
-into the
+which is the name of the script running the Anacron into the
 .I /etc/cron.hourly/jobs.deny
-directory.
+file.
 .SH EXAMPLE
 This example shows how to set up an Anacron job similar in functionality to
 .I /etc/crontab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/man/crontab.1 
new/cronie-1.5.1/man/crontab.1
--- old/cronie-1.5.0/man/crontab.1      2012-11-26 17:28:59.000000000 +0100
+++ new/cronie-1.5.1/man/crontab.1      2016-04-25 14:52:25.000000000 +0200
@@ -44,8 +44,9 @@
 .BR -c
 .SH DESCRIPTION
 .I Crontab
-is the program used to install, remove or list the tables used to serve
-the
+is the program used to install a crontab table
+.IR file ,
+remove or list the existing tables used to serve the
 .BR cron (8)
 daemon.  Each user can have their own crontab, and though these are files
 in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/man/crontab.5 
new/cronie-1.5.1/man/crontab.5
--- old/cronie-1.5.0/man/crontab.5      2014-04-29 13:53:49.000000000 +0200
+++ new/cronie-1.5.1/man/crontab.5      2015-11-09 13:26:58.000000000 +0100
@@ -100,8 +100,8 @@
 is defined (and non-empty), it is used as the envelope sender address,
 otherwise, ``root'' is used.
 .PP
-By default, cron sends a mail using the 'Content-Type:' header of
-'text/plain' with the 'charset=' parameter set to the 'charmap/codeset'
+By default, cron sends a mail using the 'Content-Type:' header
+of 'text/plain' with the 'charset=' parameter set to the 'charmap/codeset'
 of the locale in which
 .BR crond (8)
 is started up, i.e., either the default system locale, if no LC_*
@@ -195,8 +195,8 @@
 "first\-last".
 .PP
 Ranges of numbers are allowed.  Ranges are two numbers separated with a
-hyphen.  The specified range is inclusive.  For example, 8-11 for an
-'hours' entry specifies execution at hours 8, 9, 10, and 11.
+hyphen.  The specified range is inclusive.  For example, 8-11 for
+an 'hours' entry specifies execution at hours 8, 9, 10, and 11.
 .PP
 Lists are allowed.  A list is a set of numbers (or ranges) separated by
 commas.  Examples: "1,2,5,9", "0-4,8-12".
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/pam/crond new/cronie-1.5.1/pam/crond
--- old/cronie-1.5.0/pam/crond  2010-08-13 14:31:07.000000000 +0200
+++ new/cronie-1.5.1/pam/crond  2016-06-10 09:55:47.000000000 +0200
@@ -2,9 +2,10 @@
 # The PAM configuration file for the cron daemon
 #
 #
-# No PAM authentication called, auth modules not needed
+# Although no PAM authentication is called, auth modules
+# are used for credential setting
+auth       include    password-auth
 account    required   pam_access.so
 account    include    password-auth
 session    required   pam_loginuid.so
 session    include    password-auth
-auth       include    password-auth
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/src/Makefile.in 
new/cronie-1.5.1/src/Makefile.in
--- old/cronie-1.5.0/src/Makefile.in    2015-05-28 16:06:18.000000000 +0200
+++ new/cronie-1.5.1/src/Makefile.in    2016-06-23 19:20:59.000000000 +0200
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
 # Makefile.am - two binaries crond and crontab
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,12 +93,11 @@
 sbin_PROGRAMS = crond$(EXEEXT)
 bin_PROGRAMS = crontab$(EXEEXT)
 subdir = src
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -168,6 +177,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -314,7 +324,6 @@
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -668,6 +677,8 @@
        tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
        uninstall-sbinPROGRAMS
 
+.PRECIOUS: Makefile
+
 cron-paths.h: Makefile
        @echo 'creating $@'
        @sed >$@ 's/ *\\$$//' <<\END #\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/src/crontab.c 
new/cronie-1.5.1/src/crontab.c
--- old/cronie-1.5.0/src/crontab.c      2014-12-02 16:24:56.000000000 +0100
+++ new/cronie-1.5.1/src/crontab.c      2016-06-23 19:21:53.000000000 +0200
@@ -53,7 +53,6 @@
 #ifdef WITH_SELINUX
 # include <selinux/selinux.h>
 # include <selinux/context.h>
-# include <selinux/av_permissions.h>
 #endif
 
 #include "cronie_common.h"
@@ -104,7 +103,7 @@
 poke_daemon(void),
 check_error(const char *), parse_args(int c, char *v[]), die(int) 
ATTRIBUTE_NORETURN;
 static int replace_cmd(void), hostset_cmd(void), hostget_cmd(void);
-static char *host_specific_filename(const char *filename, int prefix);
+static char *host_specific_filename(const char *prefix, const char *suffix);
 static const char *tmp_path(void);
 
 static void usage(const char *msg) ATTRIBUTE_NORETURN;
@@ -445,26 +444,27 @@
        return tmpdir ? tmpdir : "/tmp";
 }
 
-static char *host_specific_filename(const char *filename, int prefix)
+static char *host_specific_filename(const char *prefix, const char *suffix)
 {
        /*
         * For cluster-wide use, where there is otherwise risk of the same
-        * name being generated on more than one host at once, prefix with
-        * "hostname." or suffix with ".hostname" as requested, and return
-        * static buffer or NULL on failure.
+        * name being generated on more than one host at once, insert hostname
+        * separated with dots, and return static buffer or NULL on failure.
         */
 
        static char safename[MAX_FNAME];
-       char hostname[MAXHOSTNAMELEN];
+       char hostname[MAX_FNAME];
 
        if (gethostname(hostname, sizeof hostname) != 0)
                return NULL;
 
        if (prefix) {
-               if (!glue_strings(safename, sizeof safename, hostname, 
filename, '.'))
+               if (!glue_strings(safename, sizeof safename, prefix, hostname, 
'.'))
                        return NULL;
-       } else {
-               if (!glue_strings(safename, sizeof safename, filename, 
hostname, '.'))
+               strcpy(hostname, safename);
+       }
+       if (suffix) {
+               if (!glue_strings(safename, sizeof safename, hostname, suffix, 
'.'))
                        return NULL;
        }
 
@@ -745,7 +745,7 @@
        char *safename;
 
 
-       safename = host_specific_filename("tmp.XXXXXXXXXX", 1);
+       safename = host_specific_filename("#tmp", "XXXXXXXXXX");
        if (!safename || !glue_strings(TempFilename, sizeof TempFilename, 
SPOOL_DIR,
                        safename, '/')) {
                TempFilename[0] = '\0';
@@ -911,7 +911,7 @@
        if (!HostSpecified)
                gethostname(Host, sizeof Host);
        
-       safename = host_specific_filename("tmp.XXXXXXXXXX", 1);
+       safename = host_specific_filename("#tmp", "XXXXXXXXXX");
        if (!safename || !glue_strings(TempFilename, sizeof TempFilename, 
SPOOL_DIR,
                safename, '/')) {
                TempFilename[0] = '\0';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/src/database.c 
new/cronie-1.5.1/src/database.c
--- old/cronie-1.5.0/src/database.c     2015-05-28 13:00:24.000000000 +0200
+++ new/cronie-1.5.1/src/database.c     2016-06-23 19:17:48.000000000 +0200
@@ -49,6 +49,7 @@
 #include "pathnames.h"
 
 #define TMAX(a,b) ((a)>(b)?(a):(b))
+#define TMIN(a,b) ((a)<(b)?(a):(b))
 
 /* size of the event structure, not counting name */
 #define EVENT_SIZE  (sizeof (struct inotify_event))
@@ -238,6 +239,8 @@
        if ((crontab_fd = check_open(tabname, uname, pw, &mtime)) == -1)
                goto next_crontab;
 
+       mtime = TMIN(new_db->mtime, mtime);
+
        Debug(DLOAD, ("\t%s:", fname));
 
        if (old_db != NULL)
@@ -262,7 +265,7 @@
                 * we finish with the crontab...
                 */
                Debug(DLOAD, (" [delete old data]"));
-                       unlink_user(old_db, u);
+               unlink_user(old_db, u);
                free_user(u);
                log_it(fname, getpid(), "RELOAD", tabname, 0);
        }
@@ -329,18 +332,18 @@
        cron_db new_db;
        DIR_T *dp;
        DIR *dir;
-       struct timeval time;
+       struct timeval tv;
        fd_set rfds;
        int retval;
        char buf[BUF_LEN];
        pid_t pid = getpid();
-       time.tv_sec = 0;
-       time.tv_usec = 0;
+       tv.tv_sec = 0;
+       tv.tv_usec = 0;
 
        FD_ZERO(&rfds);
        FD_SET(old_db->ifd, &rfds);
 
-       retval = select(old_db->ifd + 1, &rfds, NULL, NULL, &time);
+       retval = select(old_db->ifd + 1, &rfds, NULL, NULL, &tv);
        if (retval == -1) {
                if (errno != EINTR)
                        log_it("CRON", pid, "INOTIFY", "select failed", errno);
@@ -349,6 +352,7 @@
        else if (FD_ISSET(old_db->ifd, &rfds)) {
                new_db.head = new_db.tail = NULL;
                new_db.ifd = old_db->ifd;
+               new_db.mtime = time(NULL) - 1;
                while ((retval = read(old_db->ifd, buf, sizeof (buf))) == -1 &&
                        errno == EINTR) ;
 
@@ -453,14 +457,17 @@
        DIR *dir;
        pid_t pid = getpid();
        int is_local = 0;
+       time_t now;
 
        Debug(DLOAD, ("[%ld] load_database()\n", (long) pid));
 
-               /* before we start loading any data, do a stat on SPOOL_DIR
-                * so that if anything changes as of this moment (i.e., before 
we've
-                * cached any of the database), we'll see the changes next time.
-                */
-               if (stat(SPOOL_DIR, &statbuf) < OK) {
+       now = time(NULL);
+
+       /* before we start loading any data, do a stat on SPOOL_DIR
+        * so that if anything changes as of this moment (i.e., before we've
+        * cached any of the database), we'll see the changes next time.
+        */
+       if (stat(SPOOL_DIR, &statbuf) < OK) {
                log_it("CRON", pid, "STAT FAILED", SPOOL_DIR, errno);
                statbuf.st_mtime = 0;
        }
@@ -493,13 +500,17 @@
         * Note that old_db->mtime is initialized to 0 in main(), and
         * so is guaranteed to be different than the stat() mtime the first
         * time this function is called.
+        *
+        * We also use now - 1 as the upper bound of timestamp to avoid race,
+        * when a crontab is updated twice in a single second when we are
+         * just reading it.
         */
-       if (old_db->mtime == TMAX(crond_stat.st_mtime,
-                       TMAX(statbuf.st_mtime, syscron_stat.st_mtime))
+       if (old_db->mtime == TMIN(now - 1, TMAX(crond_stat.st_mtime,
+                       TMAX(statbuf.st_mtime, syscron_stat.st_mtime)))
                ) {
                Debug(DLOAD, ("[%ld] spool dir mtime unch, no load needed.\n",
                                (long) pid));
-                       return 0;
+               return 0;
        }
 
        /* something's different.  make a new database, moving unchanged
@@ -507,8 +518,7 @@
         * actually changed.  Whatever is left in the old database when
         * we're done is chaff -- crontabs that disappeared.
         */
-       new_db.mtime = TMAX(crond_stat.st_mtime,
-               TMAX(statbuf.st_mtime, syscron_stat.st_mtime));
+       new_db.mtime = now - 1;
        new_db.head = new_db.tail = NULL;
 #if defined WITH_INOTIFY
        new_db.ifd = old_db->ifd;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/src/entry.c new/cronie-1.5.1/src/entry.c
--- old/cronie-1.5.0/src/entry.c        2014-11-04 17:36:18.000000000 +0100
+++ new/cronie-1.5.1/src/entry.c        2015-11-05 14:37:09.000000000 +0100
@@ -343,8 +343,18 @@
        e->envp = tenvp;
 #ifndef LOGIN_CAP
        /* If login.conf is in used we will get the default PATH later. */
-       if (ChangePath && !env_get("PATH", e->envp)) {
-               if (glue_strings(envstr, sizeof envstr, "PATH", _PATH_DEFPATH, 
'=')) {
+       if (!env_get("PATH", e->envp)) {
+               char *defpath;
+
+               if (ChangePath)
+                       defpath = _PATH_DEFPATH;
+               else {
+                       defpath = getenv("PATH");
+                       if (defpath == NULL)
+                               defpath = _PATH_DEFPATH;
+               }
+
+               if (glue_strings(envstr, sizeof envstr, "PATH", defpath, '=')) {
                        if ((tenvp = env_set(e->envp, envstr)) == NULL) {
                                ecode = e_memory;
                                goto eof;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cronie-1.5.0/src/security.c 
new/cronie-1.5.1/src/security.c
--- old/cronie-1.5.0/src/security.c     2015-01-02 10:17:39.000000000 +0100
+++ new/cronie-1.5.1/src/security.c     2016-06-23 19:17:48.000000000 +0200
@@ -41,8 +41,6 @@
 #ifdef WITH_SELINUX
 # include <selinux/selinux.h>
 # include <selinux/context.h>
-# include <selinux/flask.h>
-# include <selinux/av_permissions.h>
 # include <selinux/get_context_list.h>
 #endif
 
@@ -483,7 +481,9 @@
        security_context_t scontext = NULL;
        security_context_t file_context = NULL;
        security_context_t rawcontext=NULL;
-       int retval = 0;
+       context_t current_context = NULL;
+       int retval;
+       char *current_context_str = NULL;
        char *seuser = NULL;
        char *level = NULL;
 
@@ -495,12 +495,31 @@
        if (name != NULL) {
                if (getseuserbyname(name, &seuser, &level) < 0) {
                        log_it(name, getpid(), "getseuserbyname FAILED", name, 
0);
+                       return security_getenforce() > 0 ? -1 : 0;
+               }
+
+               retval = get_default_context_with_level(seuser, level, NULL, 
&scontext);
+       }
+       else {
+               if (getcon(&current_context_str) < 0) {
+                       log_it(name, getpid(), "getcon FAILED", "", 0);
                        return (security_getenforce() > 0);
                }
+
+               current_context = context_new(current_context_str);
+               if (current_context == NULL) {
+                       log_it(name, getpid(), "context_new FAILED", 
current_context_str, 0);
+                       freecon(current_context_str);
+                       return (security_getenforce() > 0);
+               }
+
+               const char *current_user = context_user_get(current_context);
+               retval = get_default_context_with_level(current_user, level, 
NULL, &scontext);
+
+               freecon(current_context_str);
+               context_free(current_context);
        }
 
-       retval = get_default_context_with_level(name == NULL ? "system_u" : 
seuser,
-               level, NULL, &scontext);
        if (selinux_trans_to_raw_context(scontext, &rawcontext) == 0) {
                freecon(scontext);
                scontext = rawcontext;

++++++ cronie-pam_config.diff ++++++
--- /var/tmp/diff_new_pack.rUcJg2/_old  2017-04-07 13:52:38.145164764 +0200
+++ /var/tmp/diff_new_pack.rUcJg2/_new  2017-04-07 13:52:38.149164199 +0200
@@ -1,16 +1,16 @@
-Index: cronie-1.4.8/pam/crond
+Index: cronie-1.5.1/pam/crond
 ===================================================================
---- cronie-1.4.8.orig/pam/crond
-+++ cronie-1.4.8/pam/crond
-@@ -3,8 +3,10 @@
+--- cronie-1.5.1.orig/pam/crond
++++ cronie-1.5.1/pam/crond
+@@ -4,8 +4,10 @@
  #
- #
- # No PAM authentication called, auth modules not needed
+ # Although no PAM authentication is called, auth modules
+ # are used for credential setting
+-auth       include    password-auth
 -account    required   pam_access.so
 -account    include    password-auth
 -session    required   pam_loginuid.so
 -session    include    password-auth
--auth       include    password-auth
 +auth     sufficient     pam_rootok.so
 +account  sufficient     pam_listfile.so item=user sense=allow 
file=/etc/cron.allow onerr=succeed quiet
 +auth     include        common-auth


Reply via email to