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 - kstreitova@suse.com
+
+- 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 - kstreitova@suse.com
+
+- 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
+
+ * Remove unneeded obsolete SELinux includes.
+
+2016-06-23 Tomas Mraz
+
+ * Rename timeval time to tv so time function can be used.
+
+2016-06-23 Tomas Mraz
+
+ * 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
+
+ * Fix misleading comment in pam configuration file.
+
+2016-05-13 Tomas Mraz
+
+ * 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
+
+ * anacron: Drop potentially unsafe umask setting.
+
+2016-05-13 Tomas Mraz
+
+ * anacron: Do not try to mail to empty address.
+
+2016-04-25 Tomas Mraz
+
+ * Clarify the crontab(1) documentation.
+
+2016-04-23 Gary Tierney
+
+ * 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
+
+ * Clarify return value.
+
+2016-03-15 Tomas Mraz
+
+ * Correct instructions for disabling Anacron.
+
+2015-11-07 Ville Skyttä
+
+ * Man page syntax fixes
+
+2015-11-05 Robert Byrnes
+
+ * Inherit PATH from the crond environment if -P option is used.
+
+2015-07-13 Tomas Mraz
+
+ * In crontab command use a temporary filename that is ignored by crond.
+
+2015-05-28 Tomas Mraz
+
+ * Add *.patch and *.orig to .gitignore
+
+2015-05-28 Tomas Mraz
+
+ * Add compile to .gitignore.
+
+2015-05-28 Tomas Mraz
+
+ * Release new version 1.5.0
+ properly create dist tarball even with anacron and PAM disabled
+
2015-05-28 Tomas Mraz
* 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
#include
#include
+#include
#include "global.h"
#include
@@ -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 .
#
@@ -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='mmaslano@redhat.com,tmraz@fedoraproject.org'
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],[mmaslano@redhat.com,tmraz@fedoraproject.org])
+AC_INIT([cronie],[1.5.1],[mmaslano@redhat.com,tmraz@fedoraproject.org])
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
# include
-# include
#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
# include
-# include
-# include
# include
#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