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(¤t_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
