From 9cac67c57818611555d6bfa607ff85029035684e Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Wed, 16 Dec 2020 23:58:00 +0000 Subject: [PATCH 01/32] Add BuildRequires: make https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot --- at.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/at.spec b/at.spec index c6032fd..065296f 100644 --- a/at.spec +++ b/at.spec @@ -45,6 +45,7 @@ BuildRequires: pam-devel Conflicts: crontabs <= 1.5 # No, I'm not kidding BuildRequires: smtpdaemon +BuildRequires: make Requires(post): systemd-units Requires(preun): systemd-units From 69ccde92705fda395721c96de181a71a0983a487 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 26 Jan 2021 00:39:06 +0000 Subject: [PATCH 02/32] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index 065296f..d9312c9 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.1.23 -Release: 5%{?dist} +Release: 6%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -183,6 +183,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Tue Jan 26 2021 Fedora Release Engineering - 3.1.23-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Mon Jul 27 2020 Fedora Release Engineering - 3.1.23-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From 0b0cc322e56581560ac5891231af0dd589b3144b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 2 Mar 2021 16:14:09 +0100 Subject: [PATCH 03/32] Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. --- at.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index d9312c9..ff2f07b 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.1.23 -Release: 6%{?dist} +Release: 7%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -183,6 +183,10 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 3.1.23-7 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + * Tue Jan 26 2021 Fedora Release Engineering - 3.1.23-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From 888e351a6c74ab0104efc838773029ad46b2ab44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= Date: Fri, 16 Apr 2021 13:12:31 +0200 Subject: [PATCH 04/32] Modernize and clean spec file - Unify spaces/tabs to spaces - Use autosetup/autopatch, get rid of explicit patch numbers --- at.spec | 157 +++++++++++++++++++++++++------------------------------- 1 file changed, 70 insertions(+), 87 deletions(-) diff --git a/at.spec b/at.spec index ff2f07b..8239867 100644 --- a/at.spec +++ b/at.spec @@ -1,37 +1,37 @@ %bcond_without pam -Summary: Job spooling tools -Name: at -Version: 3.1.23 -Release: 7%{?dist} +Summary: Job spooling tools +Name: at +Version: 3.1.23 +Release: 7%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain -License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain -URL: http://ftp.debian.org/debian/pool/main/a/at +License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain +URL: http://ftp.debian.org/debian/pool/main/a/at -Source: http://ftp.debian.org/debian/pool/main/a/at/at_%{version}.orig.tar.gz +Source: http://ftp.debian.org/debian/pool/main/a/at/at_%{version}.orig.tar.gz # git upstream source git://git.debian.org/git/collab-maint/at.git -Source1: pam_atd -Source3: atd.sysconf -Source5: atd.systemd +Source1: pam_atd +Source3: atd.sysconf +Source5: atd.systemd -Patch0: at-aarch64.patch -Patch1: at-3.1.18-make.patch -Patch2: at-3.1.20-pam.patch -Patch4: at-3.1.14-opt_V.patch -Patch5: at-3.1.20-shell.patch -Patch6: at-3.1.18-nitpicks.patch -Patch8: at-3.1.14-fix_no_export.patch -Patch9: at-3.1.14-mailwithhostname.patch -Patch10: at-3.1.14-usePOSIXtimers.patch -Patch12: at-3.1.20-aborted-jobs.patch -Patch13: at-3.1.18-noabort.patch -Patch14: at-3.1.16-fclose-error.patch -Patch15: at-3.1.16-clear-nonjobs.patch -Patch16: at-3.1.18-utc-dst.patch -Patch17: at-3.1.20-lock-locks.patch -Patch18: at-3.1.23-document-n.patch -Patch19: at-3.1.20-log-jobs.patch +Patch: at-aarch64.patch +Patch: at-3.1.18-make.patch +Patch: at-3.1.20-pam.patch +Patch: at-3.1.14-opt_V.patch +Patch: at-3.1.20-shell.patch +Patch: at-3.1.18-nitpicks.patch +Patch: at-3.1.14-fix_no_export.patch +Patch: at-3.1.14-mailwithhostname.patch +Patch: at-3.1.14-usePOSIXtimers.patch +Patch: at-3.1.20-aborted-jobs.patch +Patch: at-3.1.18-noabort.patch +Patch: at-3.1.16-fclose-error.patch +Patch: at-3.1.16-clear-nonjobs.patch +Patch: at-3.1.18-utc-dst.patch +Patch: at-3.1.20-lock-locks.patch +Patch: at-3.1.23-document-n.patch +Patch: at-3.1.20-log-jobs.patch BuildRequires: gcc BuildRequires: flex flex-static bison autoconf @@ -66,58 +66,41 @@ need to be repeated at the same time every day/week, etc. you should use crontab instead. %prep -%setup -q +%autosetup -N cp %{SOURCE1} . -%patch0 -p1 -b .arm -%patch1 -p1 -b .make -%patch2 -p1 -b .pam -%patch4 -p1 -b .opt_V -%patch5 -p1 -b .shell -%patch6 -p1 -b .nit -%patch8 -p1 -b .export -%patch9 -p1 -b .mail -%patch10 -p1 -b .posix -%patch12 -p1 -b .aborted -%patch13 -p1 -b .noabort -%patch14 -p1 -b .fclose -%patch15 -p1 -b .clear-nojobs -%patch16 -p1 -b .dst -%patch17 -p1 -b .lock-locks -%patch18 -p1 -b .document-n -%patch19 -p1 -b .log-jobs +%autopatch -p1 %build -# patch9 touches configure.in +# at-3.1.14-usePOSIXtimers.patch touches configure.in autoconf # uselles files rm -f lex.yy.* y.tab.* + %configure --with-atspool=%{_localstatedir}/spool/at/spool \ - --with-jobdir=%{_localstatedir}/spool/at \ - --with-daemon_username=root \ - --with-daemon_groupname=root \ - --with-selinux \ -%if %{with pam} - --with-pam -%endif + --with-jobdir=%{_localstatedir}/spool/at \ + --with-daemon_username=root \ + --with-daemon_groupname=root \ + --with-selinux \ + %{?with_pam:--with-pam} make %install make install \ - DAEMON_USERNAME=`id -nu`\ - DAEMON_GROUPNAME=`id -ng` \ - DESTDIR=%{buildroot}\ - sbindir=%{buildroot}%{_prefix}/sbin\ - bindir=%{buildroot}%{_bindir}\ - prefix=%{buildroot}%{_prefix}\ - exec_prefix=%{buildroot}%{_prefix}\ - docdir=%{buildroot}/usr/doc\ - mandir=%{buildroot}%{_mandir}\ - etcdir=%{buildroot}%{_sysconfdir} \ - ATJOB_DIR=%{buildroot}%{_localstatedir}/spool/at \ - ATSPOOL_DIR=%{buildroot}%{_localstatedir}/spool/at/spool \ - INSTALL_ROOT_USER=`id -nu` \ - INSTALL_ROOT_GROUP=`id -nu`; + DAEMON_USERNAME=`id -nu`\ + DAEMON_GROUPNAME=`id -ng` \ + DESTDIR=%{buildroot}\ + sbindir=%{buildroot}%{_prefix}/sbin\ + bindir=%{buildroot}%{_bindir}\ + prefix=%{buildroot}%{_prefix}\ + exec_prefix=%{buildroot}%{_prefix}\ + docdir=%{buildroot}/usr/doc\ + mandir=%{buildroot}%{_mandir}\ + etcdir=%{buildroot}%{_sysconfdir} \ + ATJOB_DIR=%{buildroot}%{_localstatedir}/spool/at \ + ATSPOOL_DIR=%{buildroot}%{_localstatedir}/spool/at/spool \ + INSTALL_ROOT_USER=`id -nu` \ + INSTALL_ROOT_GROUP=`id -nu`; echo > %{buildroot}%{_sysconfdir}/at.deny mkdir docs @@ -167,20 +150,20 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %files %license Copyright COPYING %doc README timespec ChangeLog -%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/at.deny -%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/atd -%attr(0700,root,root) %dir %{_localstatedir}/spool/at -%attr(0600,root,root) %verify(not md5 size mtime) %ghost %{_localstatedir}/spool/at/.SEQ -%attr(0700,root,root) %dir %{_localstatedir}/spool/at/spool -%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/pam.d/atd +%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/at.deny +%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/atd +%attr(0700,root,root) %dir %{_localstatedir}/spool/at +%attr(0600,root,root) %verify(not md5 size mtime) %ghost %{_localstatedir}/spool/at/.SEQ +%attr(0700,root,root) %dir %{_localstatedir}/spool/at/spool +%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/pam.d/atd %{_sbindir}/atrun -%attr(0755,root,root) %{_sbindir}/atd +%attr(0755,root,root) %{_sbindir}/atd %{_mandir}/man*/* %{_bindir}/batch %{_bindir}/atrm %{_bindir}/atq -%attr(4755,root,root) %{_bindir}/at -%attr(0644,root,root) /%{_unitdir}/atd.service +%attr(4755,root,root) %{_bindir}/at +%attr(0644,root,root) /%{_unitdir}/atd.service %changelog * Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 3.1.23-7 @@ -325,7 +308,7 @@ chown root:root %{_localstatedir}/spool/at/.SEQ - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild * Mon Nov 14 2011 Marcela Mašláňová - 3.1.13-5 -- 754156 fix typo in script +- 754156 fix typo in script * Mon Nov 14 2011 Marcela Mašláňová - 3.1.13-5 - fix incorrect option in test in 56atd @@ -367,7 +350,7 @@ chown root:root %{_localstatedir}/spool/at/.SEQ - 617320 systemd init script replacement * Mon Mar 15 2010 Marcela Mašláňová - 3.1.12-5 -- 568222 interrupted 'at' job creates empty job for non-root +- 568222 interrupted 'at' job creates empty job for non-root * Mon Mar 1 2010 Marcela Mašláňová - 3.1.12-4 - 568779 atd is alway runnig after suspend/resume @@ -424,8 +407,8 @@ chown root:root %{_localstatedir}/spool/at/.SEQ - 486227 add hyphen date into manual page. * Wed Dec 3 2008 Marcela Mašláňová - 3.1.10-27 -- 464393 add script into pm-utils, because daemon wasn't taking all jobs - after suspend/hibernate +- 464393 add script into pm-utils, because daemon wasn't taking all jobs + after suspend/hibernate * Fri Oct 24 2008 Marcela Mašláňová - 3.1.10-26 - update init script according to SysVInitScript @@ -502,7 +485,7 @@ chown root:root %{_localstatedir}/spool/at/.SEQ - rhbz#224597 * Fri Oct 27 2006 Marcela Maslanova - 3.1.10-6 -- fix daylight-saving again +- fix daylight-saving again - fix #214759 - problem with seteuid * Wed Oct 25 2006 Marcela Maslanova - 3.1.10-5 @@ -537,11 +520,11 @@ chown root:root %{_localstatedir}/spool/at/.SEQ - use include instead of pam_stack in pam config * Fri Jun 03 2005 Jason Vas Dias 3.1.8-78 -- fix bug 159220: add pam_loginuid to pam session stack in /etc/pam.d/atd +- fix bug 159220: add pam_loginuid to pam session stack in /etc/pam.d/atd - fix bug 102341: add '-r' synonym for '-d' / atrm for POSIX / SuS conformance * Fri Apr 08 2005 Jason Vas Dias 3.1.8-77 -- always call pam_setcred(pamh, PAM_DELETE_CRED) before session +- always call pam_setcred(pamh, PAM_DELETE_CRED) before session - close * Tue Apr 05 2005 Jason Vas Dias 3.1.8-70 @@ -552,7 +535,7 @@ chown root:root %{_localstatedir}/spool/at/.SEQ - user can know when using at(1) if PAM permission is denied. * Tue Mar 08 2005 Jason Vas Dias 3.1.8-67 -- better fix for bug 150131: change DAEMON_USERNAME and +- better fix for bug 150131: change DAEMON_USERNAME and - DAEMON_GROUPNAME to 'root' . * Mon Mar 07 2005 Jason Vas Dias 3.1.8-66 @@ -570,7 +553,7 @@ chown root:root %{_localstatedir}/spool/at/.SEQ - details of blacklisted variables. * Tue Sep 28 2004 Rik van Riel 3.1.8-58 -- fix typo in man page, bug 112303 +- fix typo in man page, bug 112303 - (regenerated at-3.1.8-man-timespec-path.patch with fix) * Tue Aug 03 2004 Jason Vas Dias @@ -703,7 +686,7 @@ chown root:root %{_localstatedir}/spool/at/.SEQ - updated patch update, still bug #46546 * Wed Jul 18 2001 Crutcher Dunnavant -- applied enrico.scholz@informatik.tu-chemnitz.de's change to the env patch to +- applied enrico.scholz@informatik.tu-chemnitz.de's change to the env patch to - address bug #46546 * Mon Jun 25 2001 Crutcher Dunnavant @@ -786,7 +769,7 @@ chown root:root %{_localstatedir}/spool/at/.SEQ * Mon May 24 1999 Jeff Johnson - reset SIGCHLD before exec (#3016). -* Sun Mar 21 1999 Cristian Gafton +* Sun Mar 21 1999 Cristian Gafton - auto rebuild in the new build environment (release 8) * Thu Mar 18 1999 Cristian Gafton From c6984163ba5d0d2f467bfe3eec2c01a5df13b46e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= Date: Fri, 16 Apr 2021 13:20:26 +0200 Subject: [PATCH 05/32] Patch issues found by coverity (rhbz#1938678) --- at-3.2.23-coverity-fix.patch | 115 +++++++++++++++++++++++++++++++++++ at.spec | 6 +- 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 at-3.2.23-coverity-fix.patch diff --git a/at-3.2.23-coverity-fix.patch b/at-3.2.23-coverity-fix.patch new file mode 100644 index 0000000..119f2d5 --- /dev/null +++ b/at-3.2.23-coverity-fix.patch @@ -0,0 +1,115 @@ +From 4be4813262b3b57a95a5f3ce909d30741aa3ac72 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= +Date: Fri, 9 Apr 2021 16:47:33 +0200 +Subject: [PATCH] Address issues raised by static analysis +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Jan Staněk +--- + at.c | 22 ++++++++++++++++++---- + daemon.c | 21 ++++++++++++++------- + 2 files changed, 32 insertions(+), 11 deletions(-) + +diff --git a/at.c b/at.c +index df55dc9..0c74e2e 100644 +--- a/at.c ++++ b/at.c +@@ -545,17 +545,27 @@ writefile(time_t runtimer, char queue) + return; + } + +- if (fstat(fd, &statbuf) == -1) ++ if (fstat(fd, &statbuf) == -1) { ++ close(fd); + return; ++ } + if ((statbuf.st_uid != 0) || !S_ISREG(statbuf.st_mode) || +- (statbuf.st_mode & (S_IWGRP | S_IWOTH))) ++ (statbuf.st_mode & (S_IWGRP | S_IWOTH))) { ++ close(fd); + return; ++ } + + fp = fdopen(fd, "r"); +- if (fp == NULL) ++ if (fp == NULL) { ++ close(fd); + return; +- if (fscanf(fp, "%d", &pid) != 1) ++ } ++ if (fscanf(fp, "%d", &pid) != 1) { ++ fclose(fp); + return; ++ } else { ++ fclose(fp); ++ } + + kill_errno = 0; + +@@ -640,6 +650,8 @@ list_jobs(void) + else + printf("%ld\t%s %c\n", jobno, timestr, queue); + } ++ closedir(spool); ++ + PRIV_END + } + +@@ -722,6 +734,8 @@ process_jobs(int argc, char **argv, int what) + putchar(ch); + } + done = 1; ++ fclose(fp); ++ fp = NULL; + } + else { + perr("Cannot open %.500s", dirent->d_name); +diff --git a/daemon.c b/daemon.c +index 4003b56..bc8191e 100644 +--- a/daemon.c ++++ b/daemon.c +@@ -122,18 +122,23 @@ daemon_setup() + /* Set up standard daemon environment */ + pid_t pid; + mode_t old_umask; +- int fd; ++ int fd, devnull; + FILE *fp; + + if (!daemon_debug) { +- close(0); +- close(1); +- close(2); +- if ((open("/dev/null", O_RDWR) != 0) || +- (open("/dev/null", O_RDWR) != 1) || +- (open("/dev/null", O_RDWR) != 2)) { ++ devnull = open("/dev/null", O_RDWR); ++ if (devnull == -1) { + perr("Error redirecting I/O"); + } ++ ++ if ((dup2(devnull, 0) == -1) || ++ (dup2(devnull, 1) == -1) || ++ (dup2(devnull, 2) == -1)) { ++ close(devnull); ++ perr("Error redirecting I/O"); ++ } else { ++ close(devnull); ++ } + } + + if (daemon_foreground) +@@ -208,6 +213,8 @@ daemon_setup() + fcntl(fd, F_SETFD, FD_CLOEXEC); + PRIV_END + ++ /* See the above comment. */ ++ /* coverity[leaked_storage: FALSE] */ + return; + } + +-- +2.31.1 + diff --git a/at.spec b/at.spec index 8239867..a20f3c0 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.1.23 -Release: 7%{?dist} +Release: 8%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -32,6 +32,7 @@ Patch: at-3.1.18-utc-dst.patch Patch: at-3.1.20-lock-locks.patch Patch: at-3.1.23-document-n.patch Patch: at-3.1.20-log-jobs.patch +Patch: at-3.2.23-coverity-fix.patch BuildRequires: gcc BuildRequires: flex flex-static bison autoconf @@ -166,6 +167,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Fri Apr 16 2021 Jan Staněk - 3.1.23-8 +- Patch issues found by coverity (rhbz#1938678) + * Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 3.1.23-7 - Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. From e046bce8125d6828b52d7f90737f0044aaeb21e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Thu, 20 May 2021 17:05:51 +0200 Subject: [PATCH 06/32] Update to new upstream release --- .gitignore | 4 + at-3.1.18-utc-dst.patch | 24 ----- ...k-locks.patch => at-3.2.2-lock-locks.patch | 44 ++++---- at-3.1.18-make.patch => at-3.2.2-make.patch | 12 ++- at-3.1.20-pam.patch => at-3.2.2-pam.patch | 101 +++++++++--------- at-3.1.20-shell.patch => at-3.2.2-shell.patch | 15 +-- at.spec | 18 ++-- sources | 4 +- 8 files changed, 103 insertions(+), 119 deletions(-) delete mode 100644 at-3.1.18-utc-dst.patch rename at-3.1.20-lock-locks.patch => at-3.2.2-lock-locks.patch (76%) rename at-3.1.18-make.patch => at-3.2.2-make.patch (92%) rename at-3.1.20-pam.patch => at-3.2.2-pam.patch (79%) rename at-3.1.20-shell.patch => at-3.2.2-shell.patch (71%) diff --git a/.gitignore b/.gitignore index 67ec311..75aa953 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,7 @@ at_3.1.12.orig.tar.gz /at_3.1.20.orig.tar.gz /at_3.1.23.orig.tar.gz /at_3.1.23.orig.tar.gz.asc +/at_3.2.1.orig.tar.gz +/at_3.2.1.orig.tar.gz.asc +/at_3.2.2.orig.tar.gz +/at_3.2.2.orig.tar.gz.asc diff --git a/at-3.1.18-utc-dst.patch b/at-3.1.18-utc-dst.patch deleted file mode 100644 index 3a2a40b..0000000 --- a/at-3.1.18-utc-dst.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up at-3.1.18/parsetime.y.dst at-3.1.18/parsetime.y ---- at-3.1.18/parsetime.y.dst 2015-12-06 16:45:10.000000000 +0100 -+++ at-3.1.18/parsetime.y 2015-07-01 13:53:14.088881926 +0200 -@@ -476,8 +476,8 @@ parsetime(time_t currtime, int argc, cha - exectm = *localtime(&currtime); - currtime -= exectm.tm_sec; - exectm.tm_sec = 0; -- exectm.tm_isdst = -1; - memcpy(&currtm,&exectm,sizeof(currtm)); -+ exectm.tm_isdst = -1; - time_only = 0; - yearspec = 0; - -@@ -503,8 +503,8 @@ parsetime(time_t currtime, int argc, cha - return 0; - if (isgmt) { - exectime -= timezone; -- if (currtm.tm_isdst && !exectm.tm_isdst) -- exectime -= 3600; -+ if (exectm.tm_isdst) -+ exectime += 3600; - } - if (exectime < currtime) - panic("refusing to create job destined in the past"); diff --git a/at-3.1.20-lock-locks.patch b/at-3.2.2-lock-locks.patch similarity index 76% rename from at-3.1.20-lock-locks.patch rename to at-3.2.2-lock-locks.patch index 17d6ad4..6d97c82 100644 --- a/at-3.1.20-lock-locks.patch +++ b/at-3.2.2-lock-locks.patch @@ -1,6 +1,6 @@ -diff -up at-3.1.20/atd.c.lock-locks at-3.1.20/atd.c ---- at-3.1.20/atd.c.lock-locks 2016-07-01 10:41:50.640867692 +0200 -+++ at-3.1.20/atd.c 2016-07-01 10:42:32.345844967 +0200 +diff -ur b/atd.c a/atd.c +--- b/atd.c 2021-04-25 03:31:30.000000000 +0200 ++++ a/atd.c 2021-05-21 13:00:45.135020670 +0200 @@ -74,6 +74,9 @@ #include #endif @@ -11,7 +11,7 @@ diff -up at-3.1.20/atd.c.lock-locks at-3.1.20/atd.c /* Local headers */ #include "privs.h" -@@ -288,7 +291,7 @@ run_file(const char *filename, uid_t uid +@@ -275,7 +278,7 @@ * mail to the user. */ pid_t pid; @@ -20,7 +20,7 @@ diff -up at-3.1.20/atd.c.lock-locks at-3.1.20/atd.c char jobbuf[9]; char *mailname = NULL; int mailsize = 128; -@@ -410,6 +413,10 @@ run_file(const char *filename, uid_t uid +@@ -390,6 +393,10 @@ fcntl(fd_in, F_SETFD, fflags & ~FD_CLOEXEC); @@ -31,7 +31,7 @@ diff -up at-3.1.20/atd.c.lock-locks at-3.1.20/atd.c /* * If the spool directory is mounted via NFS `atd' isn't able to * read from the job file and will bump out here. The file is -@@ -553,10 +560,7 @@ run_file(const char *filename, uid_t uid +@@ -520,10 +527,7 @@ PRIV_END } /* We're the parent. Let's wait. @@ -43,7 +43,7 @@ diff -up at-3.1.20/atd.c.lock-locks at-3.1.20/atd.c non-blocking waitpid. So this blocking one will eventually return with an ECHILD error. */ -@@ -573,14 +577,14 @@ run_file(const char *filename, uid_t uid +@@ -548,14 +552,14 @@ /* some sendmail implementations are confused if stdout, stderr are * not available, so let them point to /dev/null */ @@ -63,7 +63,7 @@ diff -up at-3.1.20/atd.c.lock-locks at-3.1.20/atd.c if (unlink(filename) == -1) syslog(LOG_WARNING, "Warning: removing output file for job %li failed: %s", -@@ -588,7 +592,12 @@ run_file(const char *filename, uid_t uid +@@ -563,7 +567,12 @@ /* The job is now finished. We can delete its input file. */ @@ -77,31 +77,31 @@ diff -up at-3.1.20/atd.c.lock-locks at-3.1.20/atd.c unlink(newname); free(newname); -@@ -723,16 +732,18 @@ run_loop() +@@ -673,16 +682,18 @@ /* Skip lock files */ if (queue == '=') { - /* FIXME: calhariz */ -- /* I think the following code is broken, but commenting -- may haven unknow side effects. Make a release and see +- /* I think the following code is broken, but commenting it +- may cause unknow side effects. Make a release and see - in the wild how it works. For more information see: -- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=818508/* +- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=818508 */ - - /* if ((buf.st_nlink == 1) && (run_time + CHECK_INTERVAL <= now)) { */ - /* /\* Remove stale lockfile FIXME: lock the lockfile, if you fail, it's still in use. *\/ */ - /* unlink(dirent->d_name); */ - /* } */ -+ if ((buf.st_nlink == 1) && (run_time + CHECK_INTERVAL <= now)) { -+ int fd; ++ if ((buf.st_nlink == 1) && (run_time + CHECK_INTERVAL <= now)) { ++ int fd; + -+ fd = open(dirent->d_name, O_RDONLY); -+ if (fd != -1) { -+ if (flock(fd, LOCK_EX | LOCK_NB) == 0) { -+ unlink(dirent->d_name); -+ syslog(LOG_NOTICE, "removing stale lock file %s\n", dirent->d_name); -+ } -+ (void)close(fd); -+ } ++ fd = open(dirent->d_name, O_RDONLY); ++ if (fd != -1) { ++ if (flock(fd, LOCK_EX | LOCK_NB) == 0) { ++ unlink(dirent->d_name); ++ syslog(LOG_NOTICE, "removing stale lock file %s\n", dirent->d_name); ++ } ++ (void)close(fd); ++ } + } continue; } diff --git a/at-3.1.18-make.patch b/at-3.2.2-make.patch similarity index 92% rename from at-3.1.18-make.patch rename to at-3.2.2-make.patch index 171b63c..dca750f 100644 --- a/at-3.1.18-make.patch +++ b/at-3.2.2-make.patch @@ -1,7 +1,7 @@ -diff -up at-3.1.18/Makefile.in.make at-3.1.18/Makefile.in ---- at-3.1.18/Makefile.in.make 2015-12-06 16:45:10.000000000 +0100 -+++ at-3.1.18/Makefile.in 2016-03-23 12:38:15.652898579 +0100 -@@ -68,13 +68,13 @@ LIST = Filelist Filelist.asc +diff -ur b/Makefile.in a/Makefile.in +--- b/Makefile.in 2021-04-25 03:31:30.000000000 +0200 ++++ a/Makefile.in 2021-05-20 17:44:24.477236293 +0200 +@@ -71,13 +71,13 @@ all: at atd atd.service atrun at: $(ATOBJECTS) @@ -17,7 +17,7 @@ diff -up at-3.1.18/Makefile.in.make at-3.1.18/Makefile.in y.tab.c y.tab.h: parsetime.y $(YACC) -d parsetime.y -@@ -89,38 +89,41 @@ atrun: atrun.in +@@ -92,40 +92,41 @@ configure .c.o: @@ -28,6 +28,7 @@ diff -up at-3.1.18/Makefile.in.make at-3.1.18/Makefile.in - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(etcdir) - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(bindir) - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(sbindir) +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdatadir) - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(docdir) - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdocdir) - $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) @@ -52,6 +53,7 @@ diff -up at-3.1.18/Makefile.in.make at-3.1.18/Makefile.in $(LN_S) -f at $(IROOT)$(bindir)/atq $(LN_S) -f at $(IROOT)$(bindir)/atrm - $(INSTALL) -g root -o root -m 755 batch $(IROOT)$(bindir) +- $(INSTALL) -g root -o root -m 755 batch-job $(IROOT)$(atdatadir) - $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man1dir) - $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man5dir) - $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man8dir) diff --git a/at-3.1.20-pam.patch b/at-3.2.2-pam.patch similarity index 79% rename from at-3.1.20-pam.patch rename to at-3.2.2-pam.patch index 418fa84..df1435e 100644 --- a/at-3.1.20-pam.patch +++ b/at-3.2.2-pam.patch @@ -1,7 +1,7 @@ -diff -up at-3.1.20/at.c.pam at-3.1.20/at.c ---- at-3.1.20/at.c.pam 2016-06-28 22:18:00.000000000 +0200 -+++ at-3.1.20/at.c 2016-07-01 09:44:22.251683924 +0200 -@@ -144,18 +144,13 @@ sigc(int signo) +diff -ur b/at.c a/at.c +--- b/at.c 2021-04-25 03:31:30.000000000 +0200 ++++ a/at.c 2021-05-20 17:57:36.909775361 +0200 +@@ -145,18 +145,12 @@ /* If the user presses ^C, remove the spool file and exit */ if (fcreated) { @@ -16,13 +16,12 @@ diff -up at-3.1.20/at.c.pam at-3.1.20/at.c - unlink(atfile); - setregid(effective_gid, real_gid); - /* -+ unlink(atfile); PRIV_END - */ } exit(EXIT_FAILURE); } -@@ -315,26 +310,19 @@ writefile(time_t runtimer, char queue) +@@ -316,26 +310,19 @@ * bit. Yes, this is a kluge. */ cmask = umask(S_IRUSR | S_IWUSR | S_IXUSR); @@ -52,7 +51,7 @@ diff -up at-3.1.20/at.c.pam at-3.1.20/at.c /* We've successfully created the file; let's set the flag so it * gets removed in case of an interrupt or error. */ -@@ -673,7 +661,7 @@ process_jobs(int argc, char **argv, int +@@ -694,7 +681,7 @@ We need the unprivileged uid here since the file is owned by the real (not effective) uid. */ @@ -61,7 +60,7 @@ diff -up at-3.1.20/at.c.pam at-3.1.20/at.c if (queue == '=') { fprintf(stderr, "Warning: deleting running job\n"); -@@ -682,8 +670,8 @@ process_jobs(int argc, char **argv, int +@@ -703,8 +690,8 @@ perr("Cannot unlink %.500s", dirent->d_name); rc = EXIT_FAILURE; } @@ -71,7 +70,7 @@ diff -up at-3.1.20/at.c.pam at-3.1.20/at.c done = 1; break; -@@ -693,7 +681,7 @@ process_jobs(int argc, char **argv, int +@@ -714,7 +701,7 @@ FILE *fp; int ch; @@ -80,7 +79,7 @@ diff -up at-3.1.20/at.c.pam at-3.1.20/at.c fp = fopen(dirent->d_name, "r"); if (fp) { -@@ -706,7 +694,7 @@ process_jobs(int argc, char **argv, int +@@ -727,7 +714,7 @@ perr("Cannot open %.500s", dirent->d_name); rc = EXIT_FAILURE; } @@ -89,10 +88,10 @@ diff -up at-3.1.20/at.c.pam at-3.1.20/at.c } break; -diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c ---- at-3.1.20/atd.c.pam 2016-06-28 22:14:39.000000000 +0200 -+++ at-3.1.20/atd.c 2016-07-01 09:44:22.251683924 +0200 -@@ -91,6 +91,10 @@ int selinux_enabled = 0; +diff -ur b/atd.c a/atd.c +--- b/atd.c 2021-04-25 03:31:30.000000000 +0200 ++++ a/atd.c 2021-05-20 17:57:35.005776469 +0200 +@@ -91,6 +91,10 @@ /* Macros */ @@ -103,7 +102,7 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c #define BATCH_INTERVAL_DEFAULT 60 #define CHECK_INTERVAL 3600 -@@ -114,7 +118,7 @@ static int run_as_daemon = 0; +@@ -114,7 +118,7 @@ static volatile sig_atomic_t term_signal = 0; @@ -112,7 +111,7 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c #include static pam_handle_t *pamh = NULL; -@@ -123,15 +127,7 @@ static const struct pam_conv conv = { +@@ -123,15 +127,7 @@ NULL }; @@ -129,7 +128,7 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c /* Signal handlers */ RETSIGTYPE -@@ -292,7 +288,7 @@ run_file(const char *filename, uid_t uid +@@ -292,7 +288,7 @@ char fmt[64]; unsigned long jobno; int rc; @@ -138,7 +137,7 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c int retcode; #endif -@@ -449,17 +445,11 @@ run_file(const char *filename, uid_t uid +@@ -449,17 +445,11 @@ fstat(fd_out, &buf); size = buf.st_size; @@ -161,12 +160,13 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c #endif close(STDIN_FILENO); -@@ -473,7 +463,14 @@ run_file(const char *filename, uid_t uid +@@ -473,7 +463,14 @@ else if (pid == 0) { char *nul = NULL; char **nenvp = &nul; +- + char **pam_envp=0L; - ++ + PRIV_START +#ifdef WITH_PAM + pam_envp = pam_getenvlist(pamh); @@ -176,16 +176,16 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c /* Set up things for the child; we want standard input from the * input file, and standard output and error sent to our output file. */ -@@ -492,8 +489,6 @@ run_file(const char *filename, uid_t uid +@@ -492,8 +489,6 @@ close(fd_in); close(fd_out); - PRIV_START - - nice((tolower((int) queue) - 'a' + 1) * 2); + nice((tolower((int) queue) - 'a') * 2); #ifdef WITH_SELINUX -@@ -514,9 +509,9 @@ run_file(const char *filename, uid_t uid +@@ -514,9 +509,9 @@ chdir("/"); @@ -198,7 +198,7 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c PRIV_END } /* We're the parent. Let's wait. -@@ -529,14 +524,6 @@ run_file(const char *filename, uid_t uid +@@ -529,14 +524,6 @@ */ waitpid(pid, (int *) NULL, 0); @@ -213,21 +213,21 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c /* Send mail. Unlink the output file after opening it, so it * doesn't hang around after the run. */ -@@ -567,8 +554,13 @@ run_file(const char *filename, uid_t uid +@@ -567,8 +554,13 @@ unlink(newname); free(newname); +#ifdef ATD_MAIL_PROGRAM if (((send_mail != -1) && (buf.st_size != size)) || (send_mail == 1)) { + int mail_pid = -1; - ++ + mail_pid = fork(); -+ + + if ( mail_pid == 0 ) { PRIV_START if (initgroups(pentry->pw_name, pentry->pw_gid)) -@@ -590,7 +582,20 @@ run_file(const char *filename, uid_t uid +@@ -590,7 +582,20 @@ perr("Exec failed for mail command"); PRIV_END @@ -236,7 +236,7 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c + syslog(LOG_ERR, "fork of mailer failed: %m"); + } + /* Parent */ -+ waitpid(mail_pid, (int *) NULL, 0); ++ waitpid(mail_pid, (int *) NULL, 0); } + +#ifdef WITH_PAM @@ -248,10 +248,10 @@ diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c exit(EXIT_SUCCESS); } -diff -up at-3.1.20/config.h.in.pam at-3.1.20/config.h.in ---- at-3.1.20/config.h.in.pam 2015-12-18 21:29:24.000000000 +0100 -+++ at-3.1.20/config.h.in 2016-07-01 09:44:22.251683924 +0200 -@@ -68,8 +68,8 @@ +diff -ur b/config.h.in a/config.h.in +--- b/config.h.in 2021-04-25 03:31:30.000000000 +0200 ++++ a/config.h.in 2021-05-20 17:59:32.127708342 +0200 +@@ -71,8 +71,8 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NLIST_H @@ -262,10 +262,10 @@ diff -up at-3.1.20/config.h.in.pam at-3.1.20/config.h.in /* Define to 1 if you have the `pstat_getdynamic' function. */ #undef HAVE_PSTAT_GETDYNAMIC -diff -up at-3.1.20/configure.ac.pam at-3.1.20/configure.ac ---- at-3.1.20/configure.ac.pam 2016-06-28 22:55:52.000000000 +0200 -+++ at-3.1.20/configure.ac 2016-07-01 09:45:23.268092527 +0200 -@@ -78,7 +78,7 @@ AC_FUNC_GETLOADAVG +diff -ur b/configure.ac a/configure.ac +--- b/configure.ac 2021-04-25 03:31:30.000000000 +0200 ++++ a/configure.ac 2021-05-20 17:59:29.088710109 +0200 +@@ -96,7 +96,7 @@ AC_CHECK_FUNCS(getcwd mktime strftime setreuid setresuid sigaction waitpid) AC_CHECK_HEADERS(security/pam_appl.h, [ PAMLIB="-lpam" @@ -274,7 +274,7 @@ diff -up at-3.1.20/configure.ac.pam at-3.1.20/configure.ac ]) dnl Checking for programs -@@ -239,6 +239,13 @@ AC_ARG_WITH(daemon_username, +@@ -257,6 +257,13 @@ ) AC_SUBST(DAEMON_USERNAME) @@ -288,10 +288,10 @@ diff -up at-3.1.20/configure.ac.pam at-3.1.20/configure.ac AC_ARG_WITH(selinux, [ --with-selinux Define to run with selinux (default=check)], [], -diff -up at-3.1.20/Makefile.in.pam at-3.1.20/Makefile.in ---- at-3.1.20/Makefile.in.pam 2016-07-01 09:44:22.250683901 +0200 -+++ at-3.1.20/Makefile.in 2016-07-01 09:44:22.252683947 +0200 -@@ -68,7 +68,7 @@ LIST = Filelist Filelist.asc +diff -ur b/Makefile.in a/Makefile.in +--- b/Makefile.in 2021-04-25 03:31:30.000000000 +0200 ++++ a/Makefile.in 2021-05-20 18:00:04.874689294 +0200 +@@ -71,7 +71,7 @@ all: at atd atd.service atrun at: $(ATOBJECTS) @@ -300,9 +300,9 @@ diff -up at-3.1.20/Makefile.in.pam at-3.1.20/Makefile.in rm -f $(CLONES) $(LN_S) -f at atq $(LN_S) -f at atrm -diff -up at-3.1.20/perm.c.pam at-3.1.20/perm.c ---- at-3.1.20/perm.c.pam 2015-08-22 00:09:22.000000000 +0200 -+++ at-3.1.20/perm.c 2016-07-01 09:44:22.252683947 +0200 +diff -ur b/perm.c a/perm.c +--- b/perm.c 2021-04-25 03:31:30.000000000 +0200 ++++ a/perm.c 2021-05-20 18:01:58.689621839 +0200 @@ -51,6 +51,14 @@ #define PRIV_END while(0) #endif @@ -318,7 +318,7 @@ diff -up at-3.1.20/perm.c.pam at-3.1.20/perm.c /* Structures and unions */ -@@ -108,18 +116,45 @@ user_in_file(const char *path, const cha +@@ -108,18 +116,45 @@ int check_permission() { @@ -367,10 +367,10 @@ diff -up at-3.1.20/perm.c.pam at-3.1.20/perm.c allow = user_in_file(ETCDIR "/at.allow", pentry->pw_name); if (allow==0 || allow==1) return allow; -diff -up at-3.1.20/privs.h.pam at-3.1.20/privs.h ---- at-3.1.20/privs.h.pam 2015-08-22 00:09:22.000000000 +0200 -+++ at-3.1.20/privs.h 2016-07-01 09:44:22.252683947 +0200 -@@ -144,3 +144,63 @@ extern gid_t real_gid, effective_gid, da +diff -ur b/privs.h a/privs.h +--- b/privs.h 2021-04-25 03:31:30.000000000 +0200 ++++ a/privs.h 2021-05-20 18:02:51.847589692 +0200 +@@ -144,3 +144,62 @@ #error "Cannot implement user ID swapping without setreuid or setresuid" #endif #endif @@ -433,4 +433,3 @@ diff -up at-3.1.20/privs.h.pam at-3.1.20/privs.h +} + +#endif -+ diff --git a/at-3.1.20-shell.patch b/at-3.2.2-shell.patch similarity index 71% rename from at-3.1.20-shell.patch rename to at-3.2.2-shell.patch index ac9586c..16c55f8 100644 --- a/at-3.1.20-shell.patch +++ b/at-3.2.2-shell.patch @@ -1,6 +1,6 @@ -diff -up at-3.1.20/at.c.shell at-3.1.20/at.c ---- at-3.1.20/at.c.shell 2016-07-01 09:47:13.392684445 +0200 -+++ at-3.1.20/at.c 2016-07-01 09:48:47.679931959 +0200 +diff -ur b/at.c a/at.c +--- b/at.c 2021-04-25 03:31:30.000000000 +0200 ++++ a/at.c 2021-05-21 12:51:48.123335137 +0200 @@ -62,11 +62,8 @@ #include #include @@ -13,7 +13,7 @@ diff -up at-3.1.20/at.c.shell at-3.1.20/at.c #ifdef HAVE_UNISTD_H #include -@@ -239,6 +236,12 @@ writefile(time_t runtimer, char queue) +@@ -245,6 +242,12 @@ int kill_errno; int rc; int mailsize = 128; @@ -26,7 +26,7 @@ diff -up at-3.1.20/at.c.shell at-3.1.20/at.c /* Install the signal handler for SIGINT; terminate after removing the * spool file if necessary -@@ -465,6 +468,9 @@ writefile(time_t runtimer, char queue) +@@ -492,6 +495,9 @@ fprintf(fp, " || {\n\t echo 'Execution directory " "inaccessible' >&2\n\t exit 1\n}\n"); @@ -35,8 +35,8 @@ diff -up at-3.1.20/at.c.shell at-3.1.20/at.c + istty = isatty(fileno(stdin)); if (istty) { - fprintf(stderr, "at> "); -@@ -480,7 +486,7 @@ writefile(time_t runtimer, char queue) + runtime = localtime(&runtimer); +@@ -512,7 +518,7 @@ if (istty) { fprintf(stderr, "\n"); } @@ -45,3 +45,4 @@ diff -up at-3.1.20/at.c.shell at-3.1.20/at.c if (ferror(fp)) panic("Output error"); fflush(fp); +Only in a: .vscode diff --git a/at.spec b/at.spec index a20f3c0..b80c8ca 100644 --- a/at.spec +++ b/at.spec @@ -2,24 +2,24 @@ Summary: Job spooling tools Name: at -Version: 3.1.23 -Release: 8%{?dist} +Version: 3.2.2 +Release: 1%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain URL: http://ftp.debian.org/debian/pool/main/a/at -Source: http://ftp.debian.org/debian/pool/main/a/at/at_%{version}.orig.tar.gz +Source: http://software.calhariz.com/at/at_%{version}.orig.tar.gz # git upstream source git://git.debian.org/git/collab-maint/at.git Source1: pam_atd Source3: atd.sysconf Source5: atd.systemd Patch: at-aarch64.patch -Patch: at-3.1.18-make.patch -Patch: at-3.1.20-pam.patch +Patch: at-3.2.2-make.patch +Patch: at-3.2.2-pam.patch Patch: at-3.1.14-opt_V.patch -Patch: at-3.1.20-shell.patch +Patch: at-3.2.2-shell.patch Patch: at-3.1.18-nitpicks.patch Patch: at-3.1.14-fix_no_export.patch Patch: at-3.1.14-mailwithhostname.patch @@ -28,8 +28,7 @@ Patch: at-3.1.20-aborted-jobs.patch Patch: at-3.1.18-noabort.patch Patch: at-3.1.16-fclose-error.patch Patch: at-3.1.16-clear-nonjobs.patch -Patch: at-3.1.18-utc-dst.patch -Patch: at-3.1.20-lock-locks.patch +Patch: at-3.2.2-lock-locks.patch Patch: at-3.1.23-document-n.patch Patch: at-3.1.20-log-jobs.patch Patch: at-3.2.23-coverity-fix.patch @@ -167,6 +166,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Fri May 21 2021 Ondřej Pohořelský - 3.2.2-1 +- Update to new upstream release + * Fri Apr 16 2021 Jan Staněk - 3.1.23-8 - Patch issues found by coverity (rhbz#1938678) diff --git a/sources b/sources index c8bc7c4..c11e3f8 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (at_3.1.23.orig.tar.gz) = ee5cf5abf32cf1e89746e427d1cc20005ef49fad47db55512c90042a77e86b2c15f5de029c79573bc86ce4aead6ed2d561b89812510aadbc5763f9288b467cfd -SHA512 (at_3.1.23.orig.tar.gz.asc) = ccc32753d31cccd6257c25acfda3f407c3cab52ca9b6c120eca852207cb00e143daa78b81bc65cc2703c5f94cf5d7fae08d301cfc57541e1ebd31df6ae2121bb +SHA512 (at_3.2.2.orig.tar.gz) = e6f5aeddd89438aadff627d654ebc821a0b0e1a600ebaacc8a5fd3ec2c7c716f593757d00501311736d28f6d4276899667d6901d70836af208ff7d181b5b680f +SHA512 (at_3.2.2.orig.tar.gz.asc) = 54716fef56436c352a08c4bba5b0693a3dd7e187c320dc1ebf4e840b9175f024f3eb11b0a1f5dd428cfb3f2d59de8ab45b394576d71c033f99291a7bee3c1005 From ab6730cc6e77ce6b1fb8a377e223ff18d1baa12f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 21 Jul 2021 13:11:24 +0000 Subject: [PATCH 07/32] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering From 0cb09c570790bb09bee64887a0d9a3e53356d185 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 21 Jul 2021 18:07:24 +0000 Subject: [PATCH 08/32] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index b80c8ca..7eb8906 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.2 -Release: 1%{?dist} +Release: 2%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -166,6 +166,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Wed Jul 21 2021 Fedora Release Engineering - 3.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Fri May 21 2021 Ondřej Pohořelský - 3.2.2-1 - Update to new upstream release From 0bf03454683e47368699cfe75168d68da566518f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jan 2022 21:50:23 +0000 Subject: [PATCH 09/32] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index 7eb8906..54ecf9a 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.2 -Release: 2%{?dist} +Release: 3%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -166,6 +166,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Wed Jan 19 2022 Fedora Release Engineering - 3.2.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Wed Jul 21 2021 Fedora Release Engineering - 3.2.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 61a47903a516c8256b0cf1ac0bb6050af71af9e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Tue, 22 Feb 2022 17:01:05 +0100 Subject: [PATCH 10/32] Update to new upstream release - Removed at-3.1.14-usePOSIXtimers.patch and at-3.2.23-coverity-fix.patch, because upstream implemented them - Defined folder paths without %%{buildroot} in order to make them work with latest Makefile changes - Resolves: rhbz#2048132 --- .gitignore | 4 + at-3.1.14-usePOSIXtimers.patch | 111 ----------------- at-3.2.2-make.patch | 84 ------------- at-3.2.23-coverity-fix.patch | 115 ------------------ ...-jobs.patch => at-3.2.5-aborted-jobs.patch | 12 +- ...e.patch => at-3.2.5-mailwithhostname.patch | 24 ++-- at-3.2.5-make.patch | 84 +++++++++++++ ...-nitpicks.patch => at-3.2.5-nitpicks.patch | 50 ++++---- ...18-noabort.patch => at-3.2.5-noabort.patch | 13 +- at-3.2.2-pam.patch => at-3.2.5-pam.patch | 82 ++++++------- at.spec | 52 ++++---- sources | 4 +- 12 files changed, 208 insertions(+), 427 deletions(-) delete mode 100644 at-3.1.14-usePOSIXtimers.patch delete mode 100644 at-3.2.2-make.patch delete mode 100644 at-3.2.23-coverity-fix.patch rename at-3.1.20-aborted-jobs.patch => at-3.2.5-aborted-jobs.patch (71%) rename at-3.1.14-mailwithhostname.patch => at-3.2.5-mailwithhostname.patch (68%) create mode 100644 at-3.2.5-make.patch rename at-3.1.18-nitpicks.patch => at-3.2.5-nitpicks.patch (68%) rename at-3.1.18-noabort.patch => at-3.2.5-noabort.patch (69%) rename at-3.2.2-pam.patch => at-3.2.5-pam.patch (88%) diff --git a/.gitignore b/.gitignore index 75aa953..f334ce1 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,7 @@ at_3.1.12.orig.tar.gz /at_3.2.1.orig.tar.gz.asc /at_3.2.2.orig.tar.gz /at_3.2.2.orig.tar.gz.asc +/at_3.2.4.orig.tar.gz +/at_3.2.4.orig.tar.gz.asc +/at_3.2.5.orig.tar.gz +/at_3.2.5.orig.tar.gz.sig diff --git a/at-3.1.14-usePOSIXtimers.patch b/at-3.1.14-usePOSIXtimers.patch deleted file mode 100644 index 89c5614..0000000 --- a/at-3.1.14-usePOSIXtimers.patch +++ /dev/null @@ -1,111 +0,0 @@ -diff -up at-3.1.14/atd.c.timers at-3.1.14/atd.c ---- at-3.1.14/atd.c.timers 2013-12-02 11:03:01.250080057 +0100 -+++ at-3.1.14/atd.c 2013-12-02 11:06:15.560243498 +0100 -@@ -831,6 +831,54 @@ run_loop() - return next_job; - } - -+#ifdef HAVE_TIMER_CREATE -+timer_t timer; -+struct itimerspec timeout; -+ -+void timer_setup() -+{ -+ struct sigevent sev; -+ -+ sev.sigev_notify = SIGEV_SIGNAL; -+ sev.sigev_signo = SIGHUP; -+ sev.sigev_value.sival_ptr = &timer; -+ -+ memset(&timeout, 0, sizeof(timeout)); -+ -+ if (timer_create(CLOCK_REALTIME, &sev, &timer) < 0) -+ pabort("unable to create timer"); -+} -+ -+time_t atd_gettime() -+{ -+ struct timespec curtime; -+ -+ clock_gettime(CLOCK_REALTIME, &curtime); -+ -+ return curtime.tv_sec; -+} -+ -+void atd_setalarm(time_t next) -+{ -+ timeout.it_value.tv_sec = next; -+ timer_settime(timer, TIMER_ABSTIME, &timeout, NULL); -+ pause(); -+} -+#else -+void timer_setup() -+{ -+} -+ -+time_t atd_gettime() -+{ -+ return time(NULL); -+} -+ -+void atd_setalarm(time_t next) -+{ -+ sleep(next - atd_gettime()); -+} -+#endif - /* Global functions */ - - int -@@ -936,7 +984,7 @@ main(int argc, char *argv[]) - sigaction(SIGCHLD, &act, NULL); - - if (!run_as_daemon) { -- now = time(NULL); -+ now = atd_gettime(); - run_loop(); - exit(EXIT_SUCCESS); - } -@@ -959,13 +1007,14 @@ main(int argc, char *argv[]) - act.sa_handler = set_term; - sigaction(SIGINT, &act, NULL); - -+ timer_setup(); - daemon_setup(); - - do { -- now = time(NULL); -+ now = atd_gettime(); - next_invocation = run_loop(); - if (next_invocation > now) { -- sleep(next_invocation - now); -+ atd_setalarm(next_invocation); - } - } while (!term_signal); - daemon_cleanup(); -diff -up at-3.1.14/config.h.in.timers at-3.1.14/config.h.in ---- at-3.1.14/config.h.in.timers 2013-12-02 11:00:27.000000000 +0100 -+++ at-3.1.14/config.h.in 2013-12-02 11:02:06.521033976 +0100 -@@ -38,6 +38,9 @@ - /* Define to 1 if you have the `getloadavg' function. */ - #undef HAVE_GETLOADAVG - -+/* Define to 1 if you have the `timer_create' function. */ -+#undef HAVE_TIMER_CREATE -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_GETOPT_H - -diff -up at-3.1.14/configure.ac.timers at-3.1.14/configure.ac ---- at-3.1.14/configure.ac.timers 2013-12-02 11:00:27.000000000 +0100 -+++ at-3.1.14/configure.ac 2013-12-02 11:02:45.217066560 +0100 -@@ -254,6 +254,10 @@ AC_CHECK_LIB(selinux, is_selinux_enabled - AC_SUBST(SELINUXLIB) - AC_SUBST(WITH_SELINUX) - -+dnl check for POSIX timer functions -+AC_SEARCH_LIBS([timer_create],[rt]) -+AC_CHECK_FUNCS([timer_create]) -+ - AC_MSG_CHECKING(groupname to run under) - AC_ARG_WITH(daemon_groupname, - [ --with-daemon_groupname=DAEMON_GROUPNAME Groupname to run under (default daemon) ], diff --git a/at-3.2.2-make.patch b/at-3.2.2-make.patch deleted file mode 100644 index dca750f..0000000 --- a/at-3.2.2-make.patch +++ /dev/null @@ -1,84 +0,0 @@ -diff -ur b/Makefile.in a/Makefile.in ---- b/Makefile.in 2021-04-25 03:31:30.000000000 +0200 -+++ a/Makefile.in 2021-05-20 17:44:24.477236293 +0200 -@@ -71,13 +71,13 @@ - all: at atd atd.service atrun - - at: $(ATOBJECTS) -- $(CC) $(LDFLAGS) -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) -+ $(CC) $(LDFLAGS) -pie -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) - rm -f $(CLONES) - $(LN_S) -f at atq - $(LN_S) -f at atrm - - atd: $(RUNOBJECTS) -- $(CC) $(LDFLAGS) -o atd $(RUNOBJECTS) $(LIBS) $(PAMLIB) $(SELINUXLIB) -+ $(CC) $(LDFLAGS) -pie -o atd $(RUNOBJECTS) $(LIBS) $(PAMLIB) $(SELINUXLIB) - - y.tab.c y.tab.h: parsetime.y - $(YACC) -d parsetime.y -@@ -92,40 +92,41 @@ - configure - - .c.o: -- $(CC) -c $(CFLAGS) $(DEFS) $*.c -+ $(CC) -c $(CFLAGS) -fPIE $(DEFS) $*.c - - install: all -- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(etcdir) -- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(bindir) -- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(sbindir) -- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdatadir) -- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(docdir) -- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdocdir) -- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) -- chmod 1770 $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) -+ $(INSTALL) -m 755 -d $(IROOT)$(etcdir) -+ $(INSTALL) -m 755 -d $(IROOT)$(bindir) -+ $(INSTALL) -m 755 -d $(IROOT)$(sbindir) -+ $(INSTALL) -m 755 -d $(IROOT)$(docdir) -+ $(INSTALL) -m 755 -d $(IROOT)$(atdocdir) -+ $(INSTALL) -m 755 -d $(IROOT)$(etcdir)/pam.d/ -+ $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) -+ chmod 700 $(IROOT)$(ATJOB_DIR) $(IROOT)$(ATSPOOL_DIR) -+ chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(ATJOB_DIR) $(IROOT)$(ATSPOOL_DIR) - touch $(IROOT)$(LFILE) - chmod 600 $(IROOT)$(LFILE) - chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(LFILE) -- test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(IROOT)$(etcdir)/ -- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(IROOT)$(bindir) -+ test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -m 600 at.deny $(IROOT)$(etcdir)/ -+ $(INSTALL) -o $(INSTALL_ROOT_USER) -g $(DAEMON_GROUPNAME) pam_atd $(IROOT)$(etcdir)/pam.d/atd -+ $(INSTALL) -m 4755 at $(IROOT)$(bindir) - $(LN_S) -f at $(IROOT)$(bindir)/atq - $(LN_S) -f at $(IROOT)$(bindir)/atrm -- $(INSTALL) -g root -o root -m 755 batch $(IROOT)$(bindir) -- $(INSTALL) -g root -o root -m 755 batch-job $(IROOT)$(atdatadir) -- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man1dir) -- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man5dir) -- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man8dir) -- $(INSTALL) -g root -o root -m 755 atd $(IROOT)$(sbindir) -- $(INSTALL) -g root -o root -m 755 atrun $(IROOT)$(sbindir) -- $(INSTALL) -g root -o root -m 644 at.1 $(IROOT)$(man1dir)/ -+ $(INSTALL) -m 755 batch $(IROOT)$(bindir) -+ $(INSTALL) -d -m 755 $(IROOT)$(man1dir) -+ $(INSTALL) -d -m 755 $(IROOT)$(man5dir) -+ $(INSTALL) -d -m 755 $(IROOT)$(man8dir) -+ $(INSTALL) -m 755 atd $(IROOT)$(sbindir) -+ $(INSTALL) -m 755 atrun $(IROOT)$(sbindir) -+ $(INSTALL) -m 644 at.1 $(IROOT)$(man1dir)/ - cd $(IROOT)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 -- $(INSTALL) -g root -o root -m 644 atd.8 $(IROOT)$(man8dir)/ -+ $(INSTALL) -m 644 atd.8 $(IROOT)$(man8dir)/ - sed "s,\$${exec_prefix},$(exec_prefix),g" tmpman -- $(INSTALL) -g root -o root -m 644 tmpman $(IROOT)$(man8dir)/atrun.8 -+ $(INSTALL) -m 644 tmpman $(IROOT)$(man8dir)/atrun.8 - rm -f tmpman -- $(INSTALL) -g root -o root -m 644 at.allow.5 $(IROOT)$(man5dir)/ -+ $(INSTALL) -m 644 at.allow.5 $(IROOT)$(man5dir)/ - cd $(IROOT)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 -- $(INSTALL) -g root -o root -m 644 $(DOCS) $(IROOT)$(atdocdir) -+ $(INSTALL) -m 644 $(DOCS) $(IROOT)$(atdocdir) - rm -f $(IROOT)$(mandir)/cat1/at.1* $(IROOT)$(mandir)/cat1/batch.1* \ - $(IROOT)$(mandir)/cat1/atq.1* - rm -f $(IROOT)$(mandir)/cat1/atd.8* diff --git a/at-3.2.23-coverity-fix.patch b/at-3.2.23-coverity-fix.patch deleted file mode 100644 index 119f2d5..0000000 --- a/at-3.2.23-coverity-fix.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 4be4813262b3b57a95a5f3ce909d30741aa3ac72 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= -Date: Fri, 9 Apr 2021 16:47:33 +0200 -Subject: [PATCH] Address issues raised by static analysis -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Jan Staněk ---- - at.c | 22 ++++++++++++++++++---- - daemon.c | 21 ++++++++++++++------- - 2 files changed, 32 insertions(+), 11 deletions(-) - -diff --git a/at.c b/at.c -index df55dc9..0c74e2e 100644 ---- a/at.c -+++ b/at.c -@@ -545,17 +545,27 @@ writefile(time_t runtimer, char queue) - return; - } - -- if (fstat(fd, &statbuf) == -1) -+ if (fstat(fd, &statbuf) == -1) { -+ close(fd); - return; -+ } - if ((statbuf.st_uid != 0) || !S_ISREG(statbuf.st_mode) || -- (statbuf.st_mode & (S_IWGRP | S_IWOTH))) -+ (statbuf.st_mode & (S_IWGRP | S_IWOTH))) { -+ close(fd); - return; -+ } - - fp = fdopen(fd, "r"); -- if (fp == NULL) -+ if (fp == NULL) { -+ close(fd); - return; -- if (fscanf(fp, "%d", &pid) != 1) -+ } -+ if (fscanf(fp, "%d", &pid) != 1) { -+ fclose(fp); - return; -+ } else { -+ fclose(fp); -+ } - - kill_errno = 0; - -@@ -640,6 +650,8 @@ list_jobs(void) - else - printf("%ld\t%s %c\n", jobno, timestr, queue); - } -+ closedir(spool); -+ - PRIV_END - } - -@@ -722,6 +734,8 @@ process_jobs(int argc, char **argv, int what) - putchar(ch); - } - done = 1; -+ fclose(fp); -+ fp = NULL; - } - else { - perr("Cannot open %.500s", dirent->d_name); -diff --git a/daemon.c b/daemon.c -index 4003b56..bc8191e 100644 ---- a/daemon.c -+++ b/daemon.c -@@ -122,18 +122,23 @@ daemon_setup() - /* Set up standard daemon environment */ - pid_t pid; - mode_t old_umask; -- int fd; -+ int fd, devnull; - FILE *fp; - - if (!daemon_debug) { -- close(0); -- close(1); -- close(2); -- if ((open("/dev/null", O_RDWR) != 0) || -- (open("/dev/null", O_RDWR) != 1) || -- (open("/dev/null", O_RDWR) != 2)) { -+ devnull = open("/dev/null", O_RDWR); -+ if (devnull == -1) { - perr("Error redirecting I/O"); - } -+ -+ if ((dup2(devnull, 0) == -1) || -+ (dup2(devnull, 1) == -1) || -+ (dup2(devnull, 2) == -1)) { -+ close(devnull); -+ perr("Error redirecting I/O"); -+ } else { -+ close(devnull); -+ } - } - - if (daemon_foreground) -@@ -208,6 +213,8 @@ daemon_setup() - fcntl(fd, F_SETFD, FD_CLOEXEC); - PRIV_END - -+ /* See the above comment. */ -+ /* coverity[leaked_storage: FALSE] */ - return; - } - --- -2.31.1 - diff --git a/at-3.1.20-aborted-jobs.patch b/at-3.2.5-aborted-jobs.patch similarity index 71% rename from at-3.1.20-aborted-jobs.patch rename to at-3.2.5-aborted-jobs.patch index 78a196f..568ef4b 100644 --- a/at-3.1.20-aborted-jobs.patch +++ b/at-3.2.5-aborted-jobs.patch @@ -1,14 +1,14 @@ -diff -up at-3.1.20/atd.c.aborted at-3.1.20/atd.c ---- at-3.1.20/atd.c.aborted 2017-09-14 15:31:47.971486148 +0200 -+++ at-3.1.20/atd.c 2017-09-14 15:43:53.506567281 +0200 -@@ -731,12 +731,17 @@ run_loop() +diff -ur b/atd.c a/atd.c +--- b/atd.c 2022-02-22 15:55:28.745663105 +0100 ++++ a/atd.c 2022-02-22 16:07:26.416578085 +0100 +@@ -722,12 +722,18 @@ /* Is the file already locked? */ if (buf.st_nlink > 1) { + if (run_time < buf.st_mtime) + run_time = buf.st_mtime; if (run_time + CHECK_INTERVAL <= now) { -- + /* Something went wrong the last time this was executed. * Let's remove the lockfile and reschedule. + * We also change the timestamp to avoid rerunning the job more @@ -17,6 +17,6 @@ diff -up at-3.1.20/atd.c.aborted at-3.1.20/atd.c strncpy(lock_name, dirent->d_name, sizeof(lock_name)); + if (utime(lock_name, 0) < 0) + syslog(LOG_ERR, "utime couldn't be set for lock file %s\n", lock_name); - lock_name[sizeof(lock_name)-1] = '\0'; + lock_name[sizeof(lock_name)-1] = '\0'; lock_name[0] = '='; unlink(lock_name); diff --git a/at-3.1.14-mailwithhostname.patch b/at-3.2.5-mailwithhostname.patch similarity index 68% rename from at-3.1.14-mailwithhostname.patch rename to at-3.2.5-mailwithhostname.patch index a2b3f79..cebfb76 100644 --- a/at-3.1.14-mailwithhostname.patch +++ b/at-3.2.5-mailwithhostname.patch @@ -1,7 +1,7 @@ -diff -up at-3.1.14/atd.c.mail at-3.1.14/atd.c ---- at-3.1.14/atd.c.mail 2013-12-04 11:39:44.556239282 +0100 -+++ at-3.1.14/atd.c 2013-12-04 11:40:50.544234246 +0100 -@@ -100,6 +100,10 @@ int selinux_enabled=0; +diff -ur b/atd.c a/atd.c +--- b/atd.c 2022-02-22 15:21:06.649147600 +0100 ++++ a/atd.c 2022-02-22 15:49:13.640184845 +0100 +@@ -98,6 +98,10 @@ #define BATCH_INTERVAL_DEFAULT 60 #define CHECK_INTERVAL 3600 @@ -12,15 +12,15 @@ diff -up at-3.1.14/atd.c.mail at-3.1.14/atd.c /* Global variables */ uid_t real_uid, effective_uid; -@@ -117,6 +121,7 @@ static time_t last_chg; - static int nothing_to_do; +@@ -115,6 +119,7 @@ + static int nothing_to_do = 0; unsigned int batch_interval; static int run_as_daemon = 0; +static int mail_with_hostname = 0; + static int hupped = 0; static volatile sig_atomic_t term_signal = 0; - -@@ -298,6 +303,7 @@ run_file(const char *filename, uid_t uid +@@ -301,6 +306,7 @@ char fmt[64]; unsigned long jobno; int rc; @@ -28,19 +28,19 @@ diff -up at-3.1.14/atd.c.mail at-3.1.14/atd.c #ifdef WITH_PAM int retcode; #endif -@@ -452,6 +458,11 @@ run_file(const char *filename, uid_t uid +@@ -455,6 +461,11 @@ write_string(fd_out, "Subject: Output from your job "); write_string(fd_out, jobbuf); + if (mail_with_hostname > 0) { -+ gethostname(hostbuf, MAXHOSTNAMELEN-1); ++ gethostname(hostbuf, MAXHOSTNAMELEN-1); + write_string(fd_out, " "); + write_string(fd_out, hostbuf); + } write_string(fd_out, "\nTo: "); write_string(fd_out, mailname); write_string(fd_out, "\n\n"); -@@ -843,7 +854,7 @@ main(int argc, char *argv[]) +@@ -905,7 +916,7 @@ run_as_daemon = 1; batch_interval = BATCH_INTERVAL_DEFAULT; @@ -49,7 +49,7 @@ diff -up at-3.1.14/atd.c.mail at-3.1.14/atd.c switch (c) { case 'l': if (sscanf(optarg, "%lf", &load_avg) != 1) -@@ -865,6 +876,10 @@ main(int argc, char *argv[]) +@@ -927,6 +938,10 @@ daemon_foreground++; break; diff --git a/at-3.2.5-make.patch b/at-3.2.5-make.patch new file mode 100644 index 0000000..ebed90f --- /dev/null +++ b/at-3.2.5-make.patch @@ -0,0 +1,84 @@ +diff -ur b/Makefile.in a/Makefile.in +--- b/Makefile.in 2022-01-29 17:42:19.000000000 +0100 ++++ a/Makefile.in 2022-02-22 13:22:45.060320153 +0100 +@@ -76,13 +76,13 @@ + all: at atd atd.service atrun + + at: $(ATOBJECTS) +- $(CC) $(LDFLAGS) -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) ++ $(CC) $(LDFLAGS) -pie -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) + rm -f $(CLONES) + $(LN_S) -f at atq + $(LN_S) -f at atrm + + atd: $(RUNOBJECTS) +- $(CC) $(LDFLAGS) -o atd $(RUNOBJECTS) $(LIBS) $(PAMLIB) $(SELINUXLIB) ++ $(CC) $(LDFLAGS) -pie -o atd $(RUNOBJECTS) $(LIBS) $(PAMLIB) $(SELINUXLIB) + + y.tab.c y.tab.h: parsetime.y + $(YACC) -d parsetime.y +@@ -99,40 +99,41 @@ + configure + + .c.o: +- $(CC) -c $(CFLAGS) $(DEFS) $*.c ++ $(CC) -c $(CFLAGS) -fPIE $(DEFS) $*.c + + install: all +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdatadir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir) +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) +- chmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(docdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(atdocdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir)/pam.d/ ++ $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) ++ chmod 700 $(DESTDIR)$(ATJOB_DIR) $(DESTDIR)$(ATSPOOL_DIR) ++ chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(ATJOB_DIR) $(DESTDIR)$(ATSPOOL_DIR) + touch $(DESTDIR)$(LFILE) + chmod 600 $(DESTDIR)$(LFILE) + chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE) +- test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/ +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir) ++ test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -m 600 at.deny $(DESTDIR)$(etcdir)/ ++ $(INSTALL) -o $(INSTALL_ROOT_USER) -g $(DAEMON_GROUPNAME) pam_atd $(DESTDIR)$(etcdir)/pam.d/atd ++ $(INSTALL) -m 4755 at $(DESTDIR)$(bindir) + $(LN_S) -f at $(DESTDIR)$(bindir)/atq + $(LN_S) -f at $(DESTDIR)$(bindir)/atrm +- $(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir) +- $(INSTALL) -g root -o root -m 755 batch-job $(DESTDIR)$(atdatadir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir) +- $(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/ ++ $(INSTALL) -m 755 batch $(DESTDIR)$(bindir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man8dir) ++ $(INSTALL) -m 755 atd $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 755 atrun $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 644 at.1 $(DESTDIR)$(man1dir)/ + cd $(DESTDIR)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 +- $(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/ ++ $(INSTALL) -m 644 atd.8 $(DESTDIR)$(man8dir)/ + sed "s,\$${exec_prefix},$(exec_prefix),g" tmpman +- $(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 ++ $(INSTALL) -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 + rm -f tmpman +- $(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ ++ $(INSTALL) -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ + cd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 +- $(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir) ++ $(INSTALL) -m 644 $(DOCS) $(DESTDIR)$(atdocdir) + rm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \ + $(DESTDIR)$(mandir)/cat1/atq.1* + rm -f $(DESTDIR)$(mandir)/cat1/atd.8* diff --git a/at-3.1.18-nitpicks.patch b/at-3.2.5-nitpicks.patch similarity index 68% rename from at-3.1.18-nitpicks.patch rename to at-3.2.5-nitpicks.patch index 2bcaebb..3765552 100644 --- a/at-3.1.18-nitpicks.patch +++ b/at-3.2.5-nitpicks.patch @@ -1,7 +1,19 @@ -diff -up at-3.1.18/atd.c.nit at-3.1.18/atd.c ---- at-3.1.18/atd.c.nit 2016-03-23 12:46:49.222277787 +0100 -+++ at-3.1.18/atd.c 2016-03-23 12:47:50.521639804 +0100 -@@ -196,6 +196,18 @@ myfork() +diff -ur b/at.1.in a/at.1.in +--- b/at.1.in 2022-01-29 17:42:19.000000000 +0100 ++++ a/at.1.in 2022-02-22 15:19:47.598996428 +0100 +@@ -226,7 +226,7 @@ + .BR batch . + Queues with higher letters run with increased niceness. The special + queue "=" is reserved for jobs which are currently running. +-.P ++ + If a job is submitted to a queue designated with an uppercase letter, the + job is treated as if it were submitted to batch at the time of the job. + Once the time is reached, the batch processing rules with respect to load +diff -ur b/atd.c a/atd.c +--- b/atd.c 2022-02-22 15:14:02.736336912 +0100 ++++ a/atd.c 2022-02-22 15:19:02.163909540 +0100 +@@ -197,6 +197,18 @@ #define fork myfork #endif @@ -20,7 +32,7 @@ diff -up at-3.1.18/atd.c.nit at-3.1.18/atd.c #ifdef WITH_SELINUX static int -@@ -339,6 +351,9 @@ run_file(const char *filename, uid_t uid +@@ -340,6 +352,9 @@ free(newname); return; } @@ -30,51 +42,39 @@ diff -up at-3.1.18/atd.c.nit at-3.1.18/atd.c /* Let's see who we mail to. Hopefully, we can read it from * the command file; if not, send it to the owner, or, failing that, * to root. -@@ -507,6 +522,9 @@ run_file(const char *filename, uid_t uid +@@ -508,6 +523,9 @@ if (setuid(uid) < 0) perr("Cannot set user id"); -+ if (SIG_ERR == signal(SIGCHLD, SIG_DFL)) ++ if (SIG_ERR == signal(SIGCHLD, SIG_DFL)) + perr("Cannot reset signal handler to default"); + chdir("/"); execle("/bin/sh", "sh", (char *) NULL, nenvp); -@@ -572,6 +590,9 @@ run_file(const char *filename, uid_t uid +@@ -573,6 +591,9 @@ if (setuid(uid) < 0) perr("Cannot set user id"); -+ if (SIG_ERR == signal(SIGCHLD, SIG_DFL)) ++ if (SIG_ERR == signal(SIGCHLD, SIG_DFL)) + perr("Cannot reset signal handler to default"); + chdir ("/"); #if defined(SENDMAIL) -@@ -699,6 +720,7 @@ run_loop() +@@ -707,6 +728,7 @@ * Let's remove the lockfile and reschedule. */ strncpy(lock_name, dirent->d_name, sizeof(lock_name)); -+ lock_name[sizeof(lock_name)-1] = '\0'; ++ lock_name[sizeof(lock_name)-1] = '\0'; lock_name[0] = '='; unlink(lock_name); next_job = now; -@@ -733,6 +755,7 @@ run_loop() +@@ -741,6 +763,7 @@ run_batch++; if (strcmp(batch_name, dirent->d_name) > 0) { strncpy(batch_name, dirent->d_name, sizeof(batch_name)); -+ batch_name[sizeof(batch_name)-1] = '\0'; ++ batch_name[sizeof(batch_name)-1] = '\0'; batch_uid = buf.st_uid; batch_gid = buf.st_gid; batch_queue = queue; -diff -up at-3.1.18/at.1.in.nit at-3.1.18/at.1.in ---- at-3.1.18/at.1.in.nit 2015-12-06 16:45:10.000000000 +0100 -+++ at-3.1.18/at.1.in 2016-03-23 12:46:49.226277876 +0100 -@@ -210,7 +210,7 @@ queue for - .BR batch . - Queues with higher letters run with increased niceness. The special - queue "=" is reserved for jobs which are currently running. --.P -+ - If a job is submitted to a queue designated with an uppercase letter, the - job is treated as if it were submitted to batch at the time of the job. - Once the time is reached, the batch processing rules with respect to load diff --git a/at-3.1.18-noabort.patch b/at-3.2.5-noabort.patch similarity index 69% rename from at-3.1.18-noabort.patch rename to at-3.2.5-noabort.patch index 1154fb9..2d72301 100644 --- a/at-3.1.18-noabort.patch +++ b/at-3.2.5-noabort.patch @@ -1,7 +1,7 @@ -diff -up at-3.1.18/atd.c.noabort at-3.1.18/atd.c ---- at-3.1.18/atd.c.noabort 2016-03-23 12:49:15.147520116 +0100 -+++ at-3.1.18/atd.c 2016-03-23 12:49:15.148520138 +0100 -@@ -349,9 +349,12 @@ run_file(const char *filename, uid_t uid +diff -ur b/atd.c a/atd.c +--- b/atd.c 2022-02-22 16:09:15.683717386 +0100 ++++ a/atd.c 2022-02-22 16:12:48.992989327 +0100 +@@ -344,9 +344,12 @@ */ pid = fork(); @@ -17,7 +17,7 @@ diff -up at-3.1.18/atd.c.noabort at-3.1.18/atd.c else if (pid != 0) { free(mailname); free(newname); -@@ -669,15 +672,19 @@ run_loop() +@@ -659,16 +662,20 @@ * up. */ @@ -28,10 +28,11 @@ diff -up at-3.1.18/atd.c.noabort at-3.1.18/atd.c + return next_job; + } - if (nothing_to_do && buf.st_mtime <= last_chg) + if (nothing_to_do && buf.st_mtime == last_chg) return next_job; last_chg = buf.st_mtime; + hupped = 0; - if ((spool = opendir(".")) == NULL) - perr("Cannot read " ATJOB_DIR); + if ((spool = opendir(".")) == NULL) { diff --git a/at-3.2.2-pam.patch b/at-3.2.5-pam.patch similarity index 88% rename from at-3.2.2-pam.patch rename to at-3.2.5-pam.patch index df1435e..941da0a 100644 --- a/at-3.2.2-pam.patch +++ b/at-3.2.5-pam.patch @@ -1,7 +1,7 @@ diff -ur b/at.c a/at.c ---- b/at.c 2021-04-25 03:31:30.000000000 +0200 -+++ a/at.c 2021-05-20 17:57:36.909775361 +0200 -@@ -145,18 +145,12 @@ +--- b/at.c 2022-01-29 17:42:19.000000000 +0100 ++++ a/at.c 2022-02-23 18:42:45.941757090 +0100 +@@ -155,18 +155,12 @@ /* If the user presses ^C, remove the spool file and exit */ if (fcreated) { @@ -21,14 +21,14 @@ diff -ur b/at.c a/at.c } exit(EXIT_FAILURE); } -@@ -316,26 +310,19 @@ +@@ -326,26 +320,19 @@ * bit. Yes, this is a kluge. */ cmask = umask(S_IRUSR | S_IWUSR | S_IXUSR); - seteuid(real_uid); + if ((seteuid(effective_uid)) < 0) + perr("Error in seteuid: %s", errno); - if ((fd = open(atfile, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY, S_IRUSR)) == -1) + if ((fd = open(atfile, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY | O_SYNC, S_IRUSR)) == -1) perr("Cannot create atjob file %.500s", atfile); - seteuid(effective_uid); @@ -51,7 +51,7 @@ diff -ur b/at.c a/at.c /* We've successfully created the file; let's set the flag so it * gets removed in case of an interrupt or error. */ -@@ -694,7 +681,7 @@ +@@ -733,7 +720,7 @@ We need the unprivileged uid here since the file is owned by the real (not effective) uid. */ @@ -60,7 +60,7 @@ diff -ur b/at.c a/at.c if (queue == '=') { fprintf(stderr, "Warning: deleting running job\n"); -@@ -703,8 +690,8 @@ +@@ -742,8 +729,8 @@ perr("Cannot unlink %.500s", dirent->d_name); rc = EXIT_FAILURE; } @@ -70,7 +70,7 @@ diff -ur b/at.c a/at.c done = 1; break; -@@ -714,7 +701,7 @@ +@@ -753,7 +740,7 @@ FILE *fp; int ch; @@ -79,7 +79,7 @@ diff -ur b/at.c a/at.c fp = fopen(dirent->d_name, "r"); if (fp) { -@@ -727,7 +714,7 @@ +@@ -768,7 +755,7 @@ perr("Cannot open %.500s", dirent->d_name); rc = EXIT_FAILURE; } @@ -89,8 +89,8 @@ diff -ur b/at.c a/at.c break; diff -ur b/atd.c a/atd.c ---- b/atd.c 2021-04-25 03:31:30.000000000 +0200 -+++ a/atd.c 2021-05-20 17:57:35.005776469 +0200 +--- b/atd.c 2022-01-29 17:42:19.000000000 +0100 ++++ a/atd.c 2022-02-23 18:50:53.743511813 +0100 @@ -91,6 +91,10 @@ /* Macros */ @@ -102,7 +102,7 @@ diff -ur b/atd.c a/atd.c #define BATCH_INTERVAL_DEFAULT 60 #define CHECK_INTERVAL 3600 -@@ -114,7 +118,7 @@ +@@ -115,7 +119,7 @@ static volatile sig_atomic_t term_signal = 0; @@ -111,7 +111,7 @@ diff -ur b/atd.c a/atd.c #include static pam_handle_t *pamh = NULL; -@@ -123,15 +127,7 @@ +@@ -124,15 +128,7 @@ NULL }; @@ -128,7 +128,7 @@ diff -ur b/atd.c a/atd.c /* Signal handlers */ RETSIGTYPE -@@ -292,7 +288,7 @@ +@@ -293,7 +289,7 @@ char fmt[64]; unsigned long jobno; int rc; @@ -137,7 +137,7 @@ diff -ur b/atd.c a/atd.c int retcode; #endif -@@ -449,17 +445,11 @@ +@@ -450,17 +446,11 @@ fstat(fd_out, &buf); size = buf.st_size; @@ -160,11 +160,10 @@ diff -ur b/atd.c a/atd.c #endif close(STDIN_FILENO); -@@ -473,7 +463,14 @@ - else if (pid == 0) { +@@ -475,6 +465,14 @@ char *nul = NULL; char **nenvp = &nul; -- + + char **pam_envp=0L; + + PRIV_START @@ -176,16 +175,15 @@ diff -ur b/atd.c a/atd.c /* Set up things for the child; we want standard input from the * input file, and standard output and error sent to our output file. */ -@@ -492,8 +489,6 @@ +@@ -493,7 +491,6 @@ close(fd_in); close(fd_out); - PRIV_START -- + nice((tolower((int) queue) - 'a') * 2); - #ifdef WITH_SELINUX -@@ -514,9 +509,9 @@ +@@ -515,9 +512,9 @@ chdir("/"); @@ -198,7 +196,7 @@ diff -ur b/atd.c a/atd.c PRIV_END } /* We're the parent. Let's wait. -@@ -529,14 +524,6 @@ +@@ -530,14 +527,6 @@ */ waitpid(pid, (int *) NULL, 0); @@ -213,21 +211,21 @@ diff -ur b/atd.c a/atd.c /* Send mail. Unlink the output file after opening it, so it * doesn't hang around after the run. */ -@@ -567,8 +554,13 @@ +@@ -568,8 +557,13 @@ unlink(newname); free(newname); +#ifdef ATD_MAIL_PROGRAM if (((send_mail != -1) && (buf.st_size != size)) || (send_mail == 1)) { + int mail_pid = -1; -+ -+ mail_pid = fork(); ++ mail_pid = fork(); ++ + if ( mail_pid == 0 ) { PRIV_START if (initgroups(pentry->pw_name, pentry->pw_gid)) -@@ -590,7 +582,20 @@ +@@ -591,7 +585,20 @@ perr("Exec failed for mail command"); PRIV_END @@ -236,7 +234,7 @@ diff -ur b/atd.c a/atd.c + syslog(LOG_ERR, "fork of mailer failed: %m"); + } + /* Parent */ -+ waitpid(mail_pid, (int *) NULL, 0); ++ waitpid(mail_pid, (int *) NULL, 0); } + +#ifdef WITH_PAM @@ -249,9 +247,9 @@ diff -ur b/atd.c a/atd.c } diff -ur b/config.h.in a/config.h.in ---- b/config.h.in 2021-04-25 03:31:30.000000000 +0200 -+++ a/config.h.in 2021-05-20 17:59:32.127708342 +0200 -@@ -71,8 +71,8 @@ +--- b/config.h.in 2022-01-29 17:42:19.000000000 +0100 ++++ a/config.h.in 2022-02-23 18:51:31.467570176 +0100 +@@ -74,8 +74,8 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NLIST_H @@ -263,9 +261,9 @@ diff -ur b/config.h.in a/config.h.in /* Define to 1 if you have the `pstat_getdynamic' function. */ #undef HAVE_PSTAT_GETDYNAMIC diff -ur b/configure.ac a/configure.ac ---- b/configure.ac 2021-04-25 03:31:30.000000000 +0200 -+++ a/configure.ac 2021-05-20 17:59:29.088710109 +0200 -@@ -96,7 +96,7 @@ +--- b/configure.ac 2022-01-29 17:42:19.000000000 +0100 ++++ a/configure.ac 2022-02-23 18:53:08.516720324 +0100 +@@ -97,7 +97,7 @@ AC_CHECK_FUNCS(getcwd mktime strftime setreuid setresuid sigaction waitpid) AC_CHECK_HEADERS(security/pam_appl.h, [ PAMLIB="-lpam" @@ -274,7 +272,7 @@ diff -ur b/configure.ac a/configure.ac ]) dnl Checking for programs -@@ -257,6 +257,13 @@ +@@ -260,6 +260,13 @@ ) AC_SUBST(DAEMON_USERNAME) @@ -289,9 +287,9 @@ diff -ur b/configure.ac a/configure.ac [ --with-selinux Define to run with selinux (default=check)], [], diff -ur b/Makefile.in a/Makefile.in ---- b/Makefile.in 2021-04-25 03:31:30.000000000 +0200 -+++ a/Makefile.in 2021-05-20 18:00:04.874689294 +0200 -@@ -71,7 +71,7 @@ +--- b/Makefile.in 2022-02-23 18:33:26.999892289 +0100 ++++ a/Makefile.in 2022-02-23 18:53:28.600751396 +0100 +@@ -76,7 +76,7 @@ all: at atd atd.service atrun at: $(ATOBJECTS) @@ -301,8 +299,8 @@ diff -ur b/Makefile.in a/Makefile.in $(LN_S) -f at atq $(LN_S) -f at atrm diff -ur b/perm.c a/perm.c ---- b/perm.c 2021-04-25 03:31:30.000000000 +0200 -+++ a/perm.c 2021-05-20 18:01:58.689621839 +0200 +--- b/perm.c 2022-01-29 17:42:19.000000000 +0100 ++++ a/perm.c 2022-02-23 18:56:21.401018761 +0100 @@ -51,6 +51,14 @@ #define PRIV_END while(0) #endif @@ -368,8 +366,8 @@ diff -ur b/perm.c a/perm.c if (allow==0 || allow==1) return allow; diff -ur b/privs.h a/privs.h ---- b/privs.h 2021-04-25 03:31:30.000000000 +0200 -+++ a/privs.h 2021-05-20 18:02:51.847589692 +0200 +--- b/privs.h 2022-01-29 17:42:19.000000000 +0100 ++++ a/privs.h 2022-02-23 18:58:20.920203690 +0100 @@ -144,3 +144,62 @@ #error "Cannot implement user ID swapping without setreuid or setresuid" #endif diff --git a/at.spec b/at.spec index 54ecf9a..0022f4c 100644 --- a/at.spec +++ b/at.spec @@ -2,8 +2,8 @@ Summary: Job spooling tools Name: at -Version: 3.2.2 -Release: 3%{?dist} +Version: 3.2.5 +Release: 1%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -16,22 +16,20 @@ Source3: atd.sysconf Source5: atd.systemd Patch: at-aarch64.patch -Patch: at-3.2.2-make.patch -Patch: at-3.2.2-pam.patch +Patch: at-3.2.5-make.patch +Patch: at-3.2.5-pam.patch Patch: at-3.1.14-opt_V.patch Patch: at-3.2.2-shell.patch -Patch: at-3.1.18-nitpicks.patch +Patch: at-3.2.5-nitpicks.patch Patch: at-3.1.14-fix_no_export.patch -Patch: at-3.1.14-mailwithhostname.patch -Patch: at-3.1.14-usePOSIXtimers.patch -Patch: at-3.1.20-aborted-jobs.patch -Patch: at-3.1.18-noabort.patch +Patch: at-3.2.5-mailwithhostname.patch +Patch: at-3.2.5-aborted-jobs.patch +Patch: at-3.2.5-noabort.patch Patch: at-3.1.16-fclose-error.patch Patch: at-3.1.16-clear-nonjobs.patch Patch: at-3.2.2-lock-locks.patch Patch: at-3.1.23-document-n.patch Patch: at-3.1.20-log-jobs.patch -Patch: at-3.2.23-coverity-fix.patch BuildRequires: gcc BuildRequires: flex flex-static bison autoconf @@ -71,8 +69,6 @@ cp %{SOURCE1} . %autopatch -p1 %build -# at-3.1.14-usePOSIXtimers.patch touches configure.in -autoconf # uselles files rm -f lex.yy.* y.tab.* @@ -87,24 +83,24 @@ make %install make install \ - DAEMON_USERNAME=`id -nu`\ + DAEMON_USERNAME=`id -nu` \ DAEMON_GROUPNAME=`id -ng` \ - DESTDIR=%{buildroot}\ - sbindir=%{buildroot}%{_prefix}/sbin\ - bindir=%{buildroot}%{_bindir}\ - prefix=%{buildroot}%{_prefix}\ - exec_prefix=%{buildroot}%{_prefix}\ - docdir=%{buildroot}/usr/doc\ - mandir=%{buildroot}%{_mandir}\ - etcdir=%{buildroot}%{_sysconfdir} \ - ATJOB_DIR=%{buildroot}%{_localstatedir}/spool/at \ - ATSPOOL_DIR=%{buildroot}%{_localstatedir}/spool/at/spool \ + DESTDIR=%{buildroot} \ + sbindir=%{_prefix}/sbin \ + bindir=%{_bindir} \ + prefix=%{_prefix} \ + exec_prefix=%{_prefix} \ + docdir=%{_prefix}/doc \ + mandir=%{_mandir} \ + etcdir=%{_sysconfdir} \ + ATJOB_DIR=%{_localstatedir}/spool/at \ + ATSPOOL_DIR=%{_localstatedir}/spool/at/spool \ INSTALL_ROOT_USER=`id -nu` \ INSTALL_ROOT_GROUP=`id -nu`; echo > %{buildroot}%{_sysconfdir}/at.deny mkdir docs -cp %{buildroot}/%{_prefix}/doc/at/* docs/ +cp %{buildroot}%{_prefix}/doc/at/* docs/ mkdir -p %{buildroot}%{_sysconfdir}/pam.d install -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/pam.d/atd @@ -166,6 +162,14 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Tue Mar 01 2022 Ondřej Pohořelský - 3.2.5-1 +- Update to new upstream release +- Removed at-3.1.14-usePOSIXtimers.patch and at-3.2.23-coverity-fix.patch, because + upstream implemented them +- Defined folder paths without %%{buildroot} in order to make them work with latest + Makefile changes +- Resolves: rhbz#2048132 + * Wed Jan 19 2022 Fedora Release Engineering - 3.2.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/sources b/sources index c11e3f8..9e44a81 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (at_3.2.2.orig.tar.gz) = e6f5aeddd89438aadff627d654ebc821a0b0e1a600ebaacc8a5fd3ec2c7c716f593757d00501311736d28f6d4276899667d6901d70836af208ff7d181b5b680f -SHA512 (at_3.2.2.orig.tar.gz.asc) = 54716fef56436c352a08c4bba5b0693a3dd7e187c320dc1ebf4e840b9175f024f3eb11b0a1f5dd428cfb3f2d59de8ab45b394576d71c033f99291a7bee3c1005 +SHA512 (at_3.2.5.orig.tar.gz) = 542e8948bbdc1d06934070cbfe242688b541ef6342c6b0351255f8b9d7a3ed915a9304b5cf5442dfc15845b3d2b926ebecbfc5bccd204519d0a2775b27f8139c +SHA512 (at_3.2.5.orig.tar.gz.sig) = 5a38cb7da5b85233ede79e7b90aec7705250e315c5b4bcccb9c1c9a6453a9cc5c79c840023a44ac5d087137596c2b4b98971e233ea1fbbaa0c82833e53dcd8ac From 41850fcf84c76e214b88d598d79ffce72a99eaa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Tue, 8 Mar 2022 16:08:27 +0100 Subject: [PATCH 11/32] Add mising directory and batch-job script into at-3.2.5-make.patch Defined datadir in %%install section and listed batch-job in %%files section --- at-3.2.5-make.patch | 8 +++++--- at.spec | 8 +++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/at-3.2.5-make.patch b/at-3.2.5-make.patch index ebed90f..e8ebcc2 100644 --- a/at-3.2.5-make.patch +++ b/at-3.2.5-make.patch @@ -1,6 +1,6 @@ diff -ur b/Makefile.in a/Makefile.in ---- b/Makefile.in 2022-01-29 17:42:19.000000000 +0100 -+++ a/Makefile.in 2022-02-22 13:22:45.060320153 +0100 +--- b/Makefile.in 2022-02-05 11:00:57.000000000 +0100 ++++ a/Makefile.in 2022-03-08 16:05:28.088069816 +0100 @@ -76,13 +76,13 @@ all: at atd atd.service atrun @@ -17,7 +17,7 @@ diff -ur b/Makefile.in a/Makefile.in y.tab.c y.tab.h: parsetime.y $(YACC) -d parsetime.y -@@ -99,40 +99,41 @@ +@@ -99,40 +99,43 @@ configure .c.o: @@ -36,6 +36,7 @@ diff -ur b/Makefile.in a/Makefile.in + $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir) + $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) + $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(atdatadir) + $(INSTALL) -m 755 -d $(DESTDIR)$(docdir) + $(INSTALL) -m 755 -d $(DESTDIR)$(atdocdir) + $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir)/pam.d/ @@ -61,6 +62,7 @@ diff -ur b/Makefile.in a/Makefile.in - $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir) - $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/ + $(INSTALL) -m 755 batch $(DESTDIR)$(bindir) ++ $(INSTALL) -m 755 batch-job $(DESTDIR)$(atdatadir) + $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) + $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) + $(INSTALL) -d -m 755 $(DESTDIR)$(man8dir) diff --git a/at.spec b/at.spec index 0022f4c..c2b4bd4 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 1%{?dist} +Release: 2%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -88,6 +88,7 @@ make install \ DESTDIR=%{buildroot} \ sbindir=%{_prefix}/sbin \ bindir=%{_bindir} \ + datadir=%{_datadir} \ prefix=%{_prefix} \ exec_prefix=%{_prefix} \ docdir=%{_prefix}/doc \ @@ -159,9 +160,14 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %{_bindir}/atrm %{_bindir}/atq %attr(4755,root,root) %{_bindir}/at +%{_datadir}/at/batch-job %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Tue Mar 08 2022 Ondřej Pohořelský - 3.2.5-2 +- Add mising directory and batch-job script into at-3.2.5-make.patch +- Defined datadir in %%install section and listed batch-job in %%files section + * Tue Mar 01 2022 Ondřej Pohořelský - 3.2.5-1 - Update to new upstream release - Removed at-3.1.14-usePOSIXtimers.patch and at-3.2.23-coverity-fix.patch, because From d72ffaead4a4410fe7b91570d290baac991a69eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= Date: Thu, 31 Mar 2022 12:13:56 +0200 Subject: [PATCH 12/32] shell: add preceding newline to delimiter at uses heredoc redirection to pass the script being executed into user's defined $SHELL. However, the heredoc delimiter is directly concatenated to the script's contents; if these contents do not end with a newline, the delimiter is attached to the last line of the script. This patch adds a single newline to be always emmited before the delimiter. This guarantees the delimiter is always on it's own line. In case a newline is already present at the end of the original script, this simply adds a single empty line; I cannot think of any complication that could result from that. Resolves: rhbz#2070450 --- at-3.2.2-shell.patch | 10 +++++----- at.spec | 7 +++++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/at-3.2.2-shell.patch b/at-3.2.2-shell.patch index 16c55f8..9e383b8 100644 --- a/at-3.2.2-shell.patch +++ b/at-3.2.2-shell.patch @@ -4,13 +4,13 @@ diff -ur b/at.c a/at.c @@ -62,11 +62,8 @@ #include #include - + -#ifdef TM_IN_SYS_TIME #include -#else #include -#endif - + #ifdef HAVE_UNISTD_H #include @@ -245,6 +242,12 @@ @@ -23,13 +23,13 @@ diff -ur b/at.c a/at.c + + gettimeofday(&tv, &tz); + srandom(getpid()+tv.tv_usec); - + /* Install the signal handler for SIGINT; terminate after removing the * spool file if necessary @@ -492,6 +495,9 @@ fprintf(fp, " || {\n\t echo 'Execution directory " "inaccessible' >&2\n\t exit 1\n}\n"); - + + i = random(); + fprintf(fp, "${SHELL:-/bin/sh} << \'marcinDELIMITER%08lx\'\n", i); + @@ -41,7 +41,7 @@ diff -ur b/at.c a/at.c fprintf(stderr, "\n"); } - fprintf(fp, "\n"); -+ fprintf(fp, "marcinDELIMITER%08lx\n", i); ++ fprintf(fp, "\nmarcinDELIMITER%08lx\n", i); if (ferror(fp)) panic("Output error"); fflush(fp); diff --git a/at.spec b/at.spec index c2b4bd4..fe37818 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 2%{?dist} +Release: 3%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -164,9 +164,12 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Thu Mar 31 2022 Jan Staněk - 3.2.5-3 +- Add preceding newline to delimiter in at-3.2.2-shell.patch + * Tue Mar 08 2022 Ondřej Pohořelský - 3.2.5-2 - Add mising directory and batch-job script into at-3.2.5-make.patch -- Defined datadir in %%install section and listed batch-job in %%files section +- Defined datadir in %%install section and listed batch-job in %%files section * Tue Mar 01 2022 Ondřej Pohořelský - 3.2.5-1 - Update to new upstream release From b6ab1d0ee4c528867fe8d6f049a7c10700d71755 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 20 Jul 2022 21:26:49 +0000 Subject: [PATCH 13/32] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index fe37818..b98736a 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 3%{?dist} +Release: 4%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -164,6 +164,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Wed Jul 20 2022 Fedora Release Engineering - 3.2.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Thu Mar 31 2022 Jan Staněk - 3.2.5-3 - Add preceding newline to delimiter in at-3.2.2-shell.patch From a069b01c5ac84ae01edfca084f3ac59f6997843a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 18 Jan 2023 22:21:37 +0000 Subject: [PATCH 14/32] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index b98736a..989fffc 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 4%{?dist} +Release: 5%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain @@ -164,6 +164,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Wed Jan 18 2023 Fedora Release Engineering - 3.2.5-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Wed Jul 20 2022 Fedora Release Engineering - 3.2.5-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From 36dcc21dda52bf5450d29c0c130ae6e739f7c838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Mon, 26 Jun 2023 15:18:20 +0200 Subject: [PATCH 15/32] Convert licenses to SPDX format Dropped MIT and Public Domain license as they are not present in upstream sources --- at.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/at.spec b/at.spec index 989fffc..4df9333 100644 --- a/at.spec +++ b/at.spec @@ -3,10 +3,10 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 5%{?dist} +Release: 6%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain -License: GPLv3+ and GPLv2+ and ISC and MIT and Public Domain +License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC URL: http://ftp.debian.org/debian/pool/main/a/at Source: http://software.calhariz.com/at/at_%{version}.orig.tar.gz @@ -164,6 +164,10 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Mon Jun 26 2023 Ondřej Pohořelský - 3.2.5-6 +- Convert licenses to SPDX format +- Dropped MIT and Public Domain license as they are not present in upstream sources + * Wed Jan 18 2023 Fedora Release Engineering - 3.2.5-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 0489cbcbe2c133a8c9a00d1e80297247f30d4593 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 14:01:03 +0000 Subject: [PATCH 16/32] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index 4df9333..c457b82 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 6%{?dist} +Release: 7%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -164,6 +164,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 3.2.5-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Mon Jun 26 2023 Ondřej Pohořelský - 3.2.5-6 - Convert licenses to SPDX format - Dropped MIT and Public Domain license as they are not present in upstream sources From 10907ac03939fc7b28c2b951416a8209505808e1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 13:47:50 +0000 Subject: [PATCH 17/32] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index c457b82..a78d0d8 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 7%{?dist} +Release: 8%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -164,6 +164,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 3.2.5-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Wed Jul 19 2023 Fedora Release Engineering - 3.2.5-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From ba26b4715f7ecff26553c66f95ea8c13c0fe5e3d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 22 Jan 2024 23:43:30 +0000 Subject: [PATCH 18/32] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index a78d0d8..3677213 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 8%{?dist} +Release: 9%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -164,6 +164,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Mon Jan 22 2024 Fedora Release Engineering - 3.2.5-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering - 3.2.5-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 7a6968e726cdb80440a9922b5044e8b41752b86e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Thu, 2 May 2024 16:19:21 +0200 Subject: [PATCH 19/32] Corrected document-n patch Resolves: rhbz#2276918 --- at-3.1.23-document-n.patch | 3 ++- at.spec | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/at-3.1.23-document-n.patch b/at-3.1.23-document-n.patch index 7028300..39e77e4 100644 --- a/at-3.1.23-document-n.patch +++ b/at-3.1.23-document-n.patch @@ -9,10 +9,11 @@ diff -up at-3.1.23/atd.8.in.document-n at-3.1.23/atd.8.in .RB [ \-s ] .SH DESCRIPTION .B atd -@@ -44,6 +45,10 @@ in the foreground. +@@ -44,6 +45,11 @@ in the foreground. Process the at/batch queue only once. This is primarily of use for compatibility with old versions of .BR at ; ++.TP +.B \-n +Append the hostname of the system to the subject of the e-mails sent by +.BR atd . diff --git a/at.spec b/at.spec index 3677213..ba00768 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 9%{?dist} +Release: 10%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -164,6 +164,10 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Thu May 02 2024 Ondřej Pohořelský - 3.2.5-10 +- Corrected document-n patch +- Resolves: rhbz#2276918 + * Mon Jan 22 2024 Fedora Release Engineering - 3.2.5-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 14379bfef8e307901b26f2ad09acdc9afec40011 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 17 Jul 2024 17:42:30 +0000 Subject: [PATCH 20/32] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index ba00768..65d389b 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 10%{?dist} +Release: 11%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -164,6 +164,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Wed Jul 17 2024 Fedora Release Engineering - 3.2.5-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Thu May 02 2024 Ondřej Pohořelský - 3.2.5-10 - Corrected document-n patch - Resolves: rhbz#2276918 From 5f6bc87dd0f8fedd63cb63e41b3a3000cb35dd35 Mon Sep 17 00:00:00 2001 From: Ales Nezbeda Date: Thu, 8 Aug 2024 16:44:26 +0200 Subject: [PATCH 21/32] Backport PR from upstream addressing SAST issues --- at-3.2.2-lock-locks.patch | 2 +- at-3.2.5-address-sast.patch | 57 +++++++++++++++++++++++++++++++++ at-3.2.5-mailwithhostname.patch | 2 +- at-3.2.5-pam.patch | 2 +- at.spec | 7 +++- 5 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 at-3.2.5-address-sast.patch diff --git a/at-3.2.2-lock-locks.patch b/at-3.2.2-lock-locks.patch index 6d97c82..5b97d34 100644 --- a/at-3.2.2-lock-locks.patch +++ b/at-3.2.2-lock-locks.patch @@ -19,7 +19,7 @@ diff -ur b/atd.c a/atd.c + int fd_out, fd_in, fd_std; char jobbuf[9]; char *mailname = NULL; - int mailsize = 128; + size_t mailsize = 128; @@ -390,6 +393,10 @@ fcntl(fd_in, F_SETFD, fflags & ~FD_CLOEXEC); diff --git a/at-3.2.5-address-sast.patch b/at-3.2.5-address-sast.patch new file mode 100644 index 0000000..ecf981c --- /dev/null +++ b/at-3.2.5-address-sast.patch @@ -0,0 +1,57 @@ +From 43e8b5b5dd72bb9a80679dec8c15a24f00888a53 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= +Date: Wed, 26 Jun 2024 16:59:31 +0200 +Subject: [PATCH] Address issues from static analyzer +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- Tweak types in run_file() to prevent overflow +- Initialize all members of of struct tm in posix_time_parse(). + +The static analyzer findings: https://issues.redhat.com/browse/RHEL-44999 + +Signed-off-by: Jan Staněk +--- + atd.c | 4 ++-- + posixtm.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/atd.c b/atd.c +index 64fdd83..3908de3 100644 +--- a/atd.c ++++ b/atd.c +@@ -279,7 +279,7 @@ run_file(const char *filename, uid_t uid, gid_t gid) + int fd_out, fd_in; + char jobbuf[9]; + char *mailname = NULL; +- int mailsize = 128; ++ size_t mailsize = 128; + char *newname; + FILE *stream; + int send_mail = 0; +@@ -292,7 +292,7 @@ run_file(const char *filename, uid_t uid, gid_t gid) + char queue; + char fmt[64]; + unsigned long jobno; +- int rc; ++ long rc; + #ifdef HAVE_PAM + int retcode; + #endif +diff --git a/posixtm.c b/posixtm.c +index cf4ec09..06b22fa 100644 +--- a/posixtm.c ++++ b/posixtm.c +@@ -188,7 +188,7 @@ posix_time_parse (struct tm *tm, const char *s, unsigned int syntax_bits) + bool + posixtime (time_t *p, const char *s, unsigned int syntax_bits) + { +- struct tm tm0; ++ struct tm tm0 = {0}; + struct tm tm1; + struct tm const *tm; + time_t t; +-- +GitLab + diff --git a/at-3.2.5-mailwithhostname.patch b/at-3.2.5-mailwithhostname.patch index cebfb76..a601db4 100644 --- a/at-3.2.5-mailwithhostname.patch +++ b/at-3.2.5-mailwithhostname.patch @@ -23,7 +23,7 @@ diff -ur b/atd.c a/atd.c @@ -301,6 +306,7 @@ char fmt[64]; unsigned long jobno; - int rc; + long rc; + char hostbuf[MAXHOSTNAMELEN]; #ifdef WITH_PAM int retcode; diff --git a/at-3.2.5-pam.patch b/at-3.2.5-pam.patch index 941da0a..eba2f84 100644 --- a/at-3.2.5-pam.patch +++ b/at-3.2.5-pam.patch @@ -131,7 +131,7 @@ diff -ur b/atd.c a/atd.c @@ -293,7 +289,7 @@ char fmt[64]; unsigned long jobno; - int rc; + long rc; -#ifdef HAVE_PAM +#ifdef WITH_PAM int retcode; diff --git a/at.spec b/at.spec index 65d389b..d36c82d 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 11%{?dist} +Release: 12%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -15,6 +15,7 @@ Source1: pam_atd Source3: atd.sysconf Source5: atd.systemd +Patch: at-3.2.5-address-sast.patch Patch: at-aarch64.patch Patch: at-3.2.5-make.patch Patch: at-3.2.5-pam.patch @@ -164,6 +165,10 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Thu Aug 8 2024 Ales Nezbeda - 3.2.5-12 +- Backport fixes from upstream PR +- https://salsa.debian.org/debian/at/-/merge_requests/34 + * Wed Jul 17 2024 Fedora Release Engineering - 3.2.5-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 5eee4f96240768d3e34023fabb7aee4f6fdf0b64 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 11:51:06 +0000 Subject: [PATCH 22/32] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index d36c82d..b317829 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 12%{?dist} +Release: 13%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -165,6 +165,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 3.2.5-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Thu Aug 8 2024 Ales Nezbeda - 3.2.5-12 - Backport fixes from upstream PR - https://salsa.debian.org/debian/at/-/merge_requests/34 From 0da79b8efbea92705a852a17b7b9035d2cb10689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Mon, 27 Jan 2025 13:49:35 +0100 Subject: [PATCH 23/32] Unify bin and sbin directories Resolves: rhbz#2339910 --- at.spec | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/at.spec b/at.spec index b317829..fc325f7 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 13%{?dist} +Release: 14%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -87,7 +87,7 @@ make install \ DAEMON_USERNAME=`id -nu` \ DAEMON_GROUPNAME=`id -ng` \ DESTDIR=%{buildroot} \ - sbindir=%{_prefix}/sbin \ + sbindir=%{_bindir} \ bindir=%{_bindir} \ datadir=%{_datadir} \ prefix=%{_prefix} \ @@ -154,8 +154,8 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0600,root,root) %verify(not md5 size mtime) %ghost %{_localstatedir}/spool/at/.SEQ %attr(0700,root,root) %dir %{_localstatedir}/spool/at/spool %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/pam.d/atd -%{_sbindir}/atrun -%attr(0755,root,root) %{_sbindir}/atd +%{_bindir}/atrun +%attr(0755,root,root) %{_bindir}/atd %{_mandir}/man*/* %{_bindir}/batch %{_bindir}/atrm @@ -165,6 +165,10 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Mon Jan 27 2025 Ondřej Pohořelský - 3.2.5-14 +- Unify bin and sbin directories +- Resolves: rhbz#2339910 + * Thu Jan 16 2025 Fedora Release Engineering - 3.2.5-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 0da060e2afaa594f921f3cec0c13d01555a8a3eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Mon, 5 May 2025 10:14:16 +0200 Subject: [PATCH 24/32] Claim ownership of /usr/share/at Resolves: rhbz#2283298 --- at.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index fc325f7..51a0785 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 14%{?dist} +Release: 15%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -161,10 +161,15 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %{_bindir}/atrm %{_bindir}/atq %attr(4755,root,root) %{_bindir}/at +%{_datadir}/at/ %{_datadir}/at/batch-job %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Mon May 05 2025 Ondřej Pohořelský - 3.2.5-15 +- Claim ownership of /usr/share/at +- Resolves: rhbz#2283298 + * Mon Jan 27 2025 Ondřej Pohořelský - 3.2.5-14 - Unify bin and sbin directories - Resolves: rhbz#2339910 From c697b4595ce1df51088a6427f1a53121ba70c673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Thu, 26 Jun 2025 09:42:57 +0200 Subject: [PATCH 25/32] Fix past date handling with -t option --- at-3.2.5-past-date.patch | 33 +++++++++++++++++++++++++++++++++ at.spec | 6 +++++- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 at-3.2.5-past-date.patch diff --git a/at-3.2.5-past-date.patch b/at-3.2.5-past-date.patch new file mode 100644 index 0000000..6344c40 --- /dev/null +++ b/at-3.2.5-past-date.patch @@ -0,0 +1,33 @@ +From 6c131df8c85cb2761faf551f8f9db179e216fc09 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= +Date: Wed, 25 Jun 2025 14:35:31 +0200 +Subject: [PATCH] Reject past dates when using -t option + +-t option was missing validation to reject past dates, unlike the +regular time parsing. + +Add the same past date validation used by parsetime() to the posixtime() +code path to ensure consistent behavior when parsing time. +--- + at.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/at.c b/at.c +index 8d0feaa..3fb0582 100644 +--- a/at.c ++++ b/at.c +@@ -951,6 +951,11 @@ main(int argc, char **argv) + fprintf(stderr, "invalid date format: %s\n", optarg); + exit(EXIT_FAILURE); + } ++ /* Check if the parsed time is in the past */ ++ if (timer < time(NULL)) { ++ fprintf(stderr, "at: refusing to create job destined in the past\n"); ++ exit(EXIT_FAILURE); ++ } + break; + + case 'o': +-- +2.49.0 + diff --git a/at.spec b/at.spec index 51a0785..1bf04e7 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 15%{?dist} +Release: 16%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -31,6 +31,7 @@ Patch: at-3.1.16-clear-nonjobs.patch Patch: at-3.2.2-lock-locks.patch Patch: at-3.1.23-document-n.patch Patch: at-3.1.20-log-jobs.patch +Patch: at-3.2.5-past-date.patch BuildRequires: gcc BuildRequires: flex flex-static bison autoconf @@ -166,6 +167,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Wed Jun 25 2025 Ondřej Pohořelský - 3.2.5-16 +- Fix past date handling with -t option + * Mon May 05 2025 Ondřej Pohořelský - 3.2.5-15 - Claim ownership of /usr/share/at - Resolves: rhbz#2283298 From e11f7fc108132b9b3eb4daa6728a4c65ccefb907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Zaoral?= Date: Fri, 4 Jul 2025 13:22:58 +0200 Subject: [PATCH 26/32] tests: migrate from STI to TMT --- .fmf/version | 1 + plans/ci.fmf | 5 +++++ tests/initscript/main.fmf | 12 ++++++++++++ tests/initscript/runtest.sh | 2 +- tests/tests.yml | 13 ------------- 5 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 .fmf/version create mode 100644 plans/ci.fmf create mode 100644 tests/initscript/main.fmf delete mode 100644 tests/tests.yml diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/plans/ci.fmf b/plans/ci.fmf new file mode 100644 index 0000000..c1627f9 --- /dev/null +++ b/plans/ci.fmf @@ -0,0 +1,5 @@ +summary: Basic smoke test +discover: + how: fmf +execute: + how: tmt diff --git a/tests/initscript/main.fmf b/tests/initscript/main.fmf new file mode 100644 index 0000000..275b067 --- /dev/null +++ b/tests/initscript/main.fmf @@ -0,0 +1,12 @@ +summary: Initscript sanity +description: '' +contact: Radek Biba +component: + - at +test: ./runtest.sh +framework: beakerlib +recommend: + - at +duration: 5m +extra-summary: /CoreOS/at/Sanity/initscript +extra-task: /CoreOS/at/Sanity/initscript diff --git a/tests/initscript/runtest.sh b/tests/initscript/runtest.sh index a84aecb..67ecc2d 100755 --- a/tests/initscript/runtest.sh +++ b/tests/initscript/runtest.sh @@ -27,7 +27,7 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Include rhts environment -. /usr/share/rhts-library/rhtslib.sh +. /usr/share/beakerlib/beakerlib.sh || exit 1 PACKAGE="at" SERVICE="atd" diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 751a586..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -# This first play always runs on the local staging system -- hosts: localhost - roles: - - role: standard-test-beakerlib - tags: - - classic - - container - - atomic - tests: - - initscript - required_packages: - - at # Required to run initscript From 1fc88529b95f6206e1e0cc6466241e010e6d3c36 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 17:22:50 +0000 Subject: [PATCH 27/32] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index 1bf04e7..44553a5 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 16%{?dist} +Release: 17%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -167,6 +167,9 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 3.2.5-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Wed Jun 25 2025 Ondřej Pohořelský - 3.2.5-16 - Fix past date handling with -t option From 774dcfc0e121c81b6835df89ff5c83c708d2a5a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Wed, 27 Aug 2025 15:55:17 +0200 Subject: [PATCH 28/32] Use systemd-tmpfiles for /var/spool/at directories Replace RPM scriptlets with systemd-tmpfiles to create /var/spool/at structure, fixing Image Mode compatibility and bootc container lint warnings. --- at-tmpfiles.conf | 6 ++++++ at.spec | 22 ++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 at-tmpfiles.conf diff --git a/at-tmpfiles.conf b/at-tmpfiles.conf new file mode 100644 index 0000000..8eec9a7 --- /dev/null +++ b/at-tmpfiles.conf @@ -0,0 +1,6 @@ +# at - Tmpfiles configuration for at daemon +# Create /var/spool/at directory structure for the at daemon + +d /var/spool/at 0700 root root - - +d /var/spool/at/spool 0700 root root - - +f /var/spool/at/.SEQ 0600 root root - - diff --git a/at.spec b/at.spec index 44553a5..3b02e46 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 17%{?dist} +Release: 18%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -12,6 +12,7 @@ URL: http://ftp.debian.org/debian/pool/main/a/at Source: http://software.calhariz.com/at/at_%{version}.orig.tar.gz # git upstream source git://git.debian.org/git/collab-maint/at.git Source1: pam_atd +Source2: at-tmpfiles.conf Source3: atd.sysconf Source5: atd.systemd @@ -38,6 +39,7 @@ BuildRequires: flex flex-static bison autoconf BuildRequires: libselinux-devel >= 1.27.9 BuildRequires: perl(Test::Harness) BuildRequires: perl(Test::More) +BuildRequires: systemd-rpm-macros %if %{with pam} BuildRequires: pam-devel @@ -50,6 +52,7 @@ BuildRequires: make Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units +Requires: systemd-tmpfiles # at-sysvinit subpackage dropped Obsoletes: at-sysvinit < 3.1.16-1 @@ -115,18 +118,24 @@ install -m 644 %{SOURCE3} %{buildroot}/etc/sysconfig/atd mkdir -p %{buildroot}/%{_unitdir}/ install -m 644 %{SOURCE5} %{buildroot}/%{_unitdir}/atd.service +# install tmpfiles configuration +mkdir -p %{buildroot}%{_tmpfilesdir} +install -m 644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/at.conf + # remove unpackaged files from the buildroot rm -r %{buildroot}%{_prefix}/doc +# Remove .SEQ file created by make install - tmpfiles will create it +rm -f %{buildroot}%{_localstatedir}/spool/at/.SEQ %check make test %post -touch %{_localstatedir}/spool/at/.SEQ -chmod 600 %{_localstatedir}/spool/at/.SEQ -chown root:root %{_localstatedir}/spool/at/.SEQ %systemd_post atd.service +# Create directories and files using tmpfiles +%tmpfiles_create at.conf + %preun %systemd_preun atd.service @@ -151,10 +160,8 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %doc README timespec ChangeLog %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/at.deny %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/atd -%attr(0700,root,root) %dir %{_localstatedir}/spool/at -%attr(0600,root,root) %verify(not md5 size mtime) %ghost %{_localstatedir}/spool/at/.SEQ -%attr(0700,root,root) %dir %{_localstatedir}/spool/at/spool %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/pam.d/atd +%{_tmpfilesdir}/at.conf %{_bindir}/atrun %attr(0755,root,root) %{_bindir}/atd %{_mandir}/man*/* @@ -163,7 +170,6 @@ chown root:root %{_localstatedir}/spool/at/.SEQ %{_bindir}/atq %attr(4755,root,root) %{_bindir}/at %{_datadir}/at/ -%{_datadir}/at/batch-job %attr(0644,root,root) /%{_unitdir}/atd.service %changelog From 96f550ec593ca5e92c203beeb80cfe0b60ce8ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Thu, 18 Sep 2025 12:49:15 +0200 Subject: [PATCH 29/32] Add /var/spool/at and /var/spool/at/spool directories into %%files section --- at.spec | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index 3b02e46..f74305b 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 18%{?dist} +Release: 19%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -161,6 +161,8 @@ make test %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/at.deny %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/atd %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/pam.d/atd +%attr(0700,root,root) %dir %{_localstatedir}/spool/at +%attr(0700,root,root) %dir %{_localstatedir}/spool/at/spool %{_tmpfilesdir}/at.conf %{_bindir}/atrun %attr(0755,root,root) %{_bindir}/atd @@ -173,6 +175,13 @@ make test %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Thu Sep 18 2025 Ondřej Pohořelský - 3.2.5-19 +- Add /var/spool/at and /var/spool/at/spool directories into %%files section +- Resolves: rhbz#2396330 + +* Wed Aug 27 2025 Ondřej Pohořelský - 3.2.5-18 +- Use systemd-tmpfiles for /var/spool/at directories + * Wed Jul 23 2025 Fedora Release Engineering - 3.2.5-17 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From ced9e7e3752bd28284339d46b36a106452a45bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Wed, 24 Sep 2025 18:32:27 +0200 Subject: [PATCH 30/32] Remove broken and unused git submodule from tests --- tests/at | 1 - 1 file changed, 1 deletion(-) delete mode 160000 tests/at diff --git a/tests/at b/tests/at deleted file mode 160000 index 30cccc8..0000000 --- a/tests/at +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 30cccc88a2064eb05018a09d65164a26972cd5b5 From 99f9f320e1cd4b9d717a90f38b94afd7cfa8af34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= Date: Mon, 29 Sep 2025 10:26:16 +0200 Subject: [PATCH 31/32] Remove unnecessary Require --- at.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/at.spec b/at.spec index f74305b..4773caa 100644 --- a/at.spec +++ b/at.spec @@ -52,7 +52,6 @@ BuildRequires: make Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units -Requires: systemd-tmpfiles # at-sysvinit subpackage dropped Obsoletes: at-sysvinit < 3.1.16-1 From c6de37879a86d935a52ff6fb08bc601193409e5a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 16 Jan 2026 04:04:41 +0000 Subject: [PATCH 32/32] Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild --- at.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/at.spec b/at.spec index 4773caa..60d9fd4 100644 --- a/at.spec +++ b/at.spec @@ -3,7 +3,7 @@ Summary: Job spooling tools Name: at Version: 3.2.5 -Release: 19%{?dist} +Release: 20%{?dist} # http://packages.debian.org/changelogs/pool/main/a/at/current/copyright # + install-sh is MIT license with changes under Public Domain License: GPL-3.0-or-later AND GPL-2.0-or-later AND ISC @@ -174,6 +174,9 @@ make test %attr(0644,root,root) /%{_unitdir}/atd.service %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 3.2.5-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + * Thu Sep 18 2025 Ondřej Pohořelský - 3.2.5-19 - Add /var/spool/at and /var/spool/at/spool directories into %%files section - Resolves: rhbz#2396330