Package: release.debian.org Severity: normal X-Debbugs-Cc: anac...@packages.debian.org Control: affects -1 + src:anacron User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package anacron [ Reason ] There are two anacron bugs this release fixes. One bug is now set to important, and the other bug is normal severity. The normal bug is a small targeted fix that should not cause issues. [ Impact ] Bug#1092269: Temporary files anacron generates will not be removed during a run. Bug#1106000: An error message will appear in the journal when anacron is purged. [ Tests ] I manually tested that temporary files are removed automatically. The systemd-cron maintainer tested purging anacron. [ Risks ] There should be no risk with this update. [ Checklist ] [X] all changes are documented in the d/changelog [X] I reviewed all changes and I approve them [X] attach debdiff against the package in testing [ Other info ] There are other small changes to debian files that should not be an issue to update. unblock anacron/2.3-43 -- Lance Lin GPG Fingerprint: 4A31 DB5A 1EE4 096C 8739 9880 9036 4929 4C33 F9B7
diff -Nru anacron-2.3/debian/changelog anacron-2.3/debian/changelog --- anacron-2.3/debian/changelog 2025-02-25 19:38:16.000000000 +0700 +++ anacron-2.3/debian/changelog 2025-05-30 19:40:55.000000000 +0700 @@ -1,3 +1,20 @@ +anacron (2.3-43) unstable; urgency=medium + + [ Christian Goeschel Ndjomouo ] + * global.h, runjob.c: Clean up temporary files (Closes: #1092269) + + [ Lance Lin ] + * d/copyright: Update for debian/* copyright to include 2025 + * d/source/local-patch-header: Add Last-Update field for latest + updates to single-debian-patch + * d/control: Update standards version to 4.7.2 + + [ наб ] + * d/cron.d: move [ -x test into if so it doesn't fail the job if it + fails (Closes: #1106000) + + -- Lance Lin <lq27...@gmail.com> Fri, 30 May 2025 19:40:55 +0700 + anacron (2.3-42) unstable; urgency=medium * main.c: Fix FTBFS with GCC-15 diff -Nru anacron-2.3/debian/control anacron-2.3/debian/control --- anacron-2.3/debian/control 2025-02-25 19:25:35.000000000 +0700 +++ anacron-2.3/debian/control 2025-04-26 19:19:13.000000000 +0700 @@ -4,7 +4,7 @@ Build-Depends: debhelper-compat (= 13) Maintainer: Lance Lin <lq27...@gmail.com> -Standards-Version: 4.7.0 +Standards-Version: 4.7.2 Rules-Requires-Root: no Homepage: http://sourceforge.net/projects/anacron/ Vcs-Git: https://salsa.debian.org/debian/anacron.git diff -Nru anacron-2.3/debian/copyright anacron-2.3/debian/copyright --- anacron-2.3/debian/copyright 2025-02-25 19:25:35.000000000 +0700 +++ anacron-2.3/debian/copyright 2025-04-26 19:01:28.000000000 +0700 @@ -9,7 +9,7 @@ Files: debian/* Copyright: 1999-2023 Sean 'Shaleh' Perry <sha...@debian.org> - 2024 Lance Lin <lq27...@gmail.com> + 2024-2025 Lance Lin <lq27...@gmail.com> License: GPL-2+ License: GPL-2+ diff -Nru anacron-2.3/debian/cron.d anacron-2.3/debian/cron.d --- anacron-2.3/debian/cron.d 2025-02-25 19:25:35.000000000 +0700 +++ anacron-2.3/debian/cron.d 2025-05-19 22:21:58.000000000 +0700 @@ -3,4 +3,4 @@ SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -30 7-23 * * * root [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi +30 7-23 * * * root if [ -x /etc/init.d/anacron ] && ! [ -d /run/systemd/system ]; then exec /usr/sbin/invoke-rc.d anacron start >/dev/null; fi diff -Nru anacron-2.3/debian/patches/debian-changes anacron-2.3/debian/patches/debian-changes --- anacron-2.3/debian/patches/debian-changes 2025-02-25 19:38:16.000000000 +0700 +++ anacron-2.3/debian/patches/debian-changes 2025-05-30 19:40:55.000000000 +0700 @@ -535,7 +535,7 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -@@ -53,9 +54,11 @@ typedef struct env_rec1 env_rec; +@@ -53,9 +54,12 @@ typedef struct env_rec1 env_rec; struct job_rec1 { int period; @@ -544,10 +544,11 @@ char *ident; char *command; + char *mailto; ++ char *temp_file_path; int tab_line; int arg_num; -@@ -75,9 +78,10 @@ typedef struct job_rec1 job_rec; +@@ -75,9 +79,10 @@ typedef struct job_rec1 job_rec; extern pid_t primary_pid; extern char *program_name; extern char *anacrontab; @@ -559,7 +560,7 @@ extern int day_now; extern int year,month,day_of_month; extern int in_background; -@@ -93,6 +97,9 @@ extern job_rec **job_array; +@@ -93,6 +98,9 @@ extern job_rec **job_array; extern int running_jobs,running_mailers; @@ -569,7 +570,7 @@ /* Function prototypes */ -@@ -121,7 +128,7 @@ void xcloselog(); +@@ -121,7 +129,7 @@ void xcloselog(); #endif /* not DEBUG */ /* readtab.c */ @@ -1232,37 +1233,49 @@ obstack_grow(&tab_o, &j, sizeof(j)); --- anacron-2.3.orig/runjob.c +++ anacron-2.3/runjob.c -@@ -40,25 +40,18 @@ temp_file() +@@ -36,29 +36,30 @@ + #include "global.h" + + static int +-temp_file() ++temp_file(job_rec *jr) /* Open a temporary file and return its file descriptor */ { const int max_retries = 50; -- char *name; -+ char template[] = "/tmp/anacron-XXXXXX"; + char *name; ++ char template[] = "/tmp/anacron-XXXXXXX"; int fd, i; - i = 0; -- name = NULL; +- i = 0; + name = NULL; ++ i = 0; do { - i++; +- i++; - free(name); - name = tempnam(NULL, NULL); - if (name == NULL) die("Can't find a unique temporary filename"); - fd = open(name, O_RDWR | O_CREAT | O_EXCL | O_APPEND, - S_IRUSR | S_IWUSR); -+ fd = mkstemp(template); ++ i++; ++ free(name); ++ name = mktemp(template); ++ if (name == NULL) die("Can't find a unique temporary filename"); ++ fd = open(name, O_RDWR | O_CREAT | O_EXCL | O_APPEND, ++ S_IRUSR | S_IWUSR); ++ /* I'm not sure we actually need to be so persistent here */ -- } while (fd == -1 && errno == EEXIST && i < max_retries); -+ } while (fd == -1 && i < max_retries); + } while (fd == -1 && errno == EEXIST && i < max_retries); - if (fd == -1) die_e("Can't open temporary file"); - if (unlink(name)) die_e("Can't unlink temporary file"); - free(name); + if (fd == -1) die_e("Failed to create and open unique temporary filename"); ++ jr->temp_file_path = strdup(name); fcntl(fd, F_SETFD, 1); /* set close-on-exec flag */ return fd; } -@@ -84,7 +77,7 @@ username() +@@ -84,7 +85,7 @@ username() } static void @@ -1271,7 +1284,7 @@ { if (putenv(s)) die_e("Can't set the environment"); } -@@ -109,7 +102,6 @@ static void +@@ -109,7 +110,6 @@ static void run_job(const job_rec *jr) /* This is called to start the job, after the fork */ { @@ -1279,7 +1292,7 @@ /* setup stdout and stderr */ xclose(1); xclose(2); -@@ -153,6 +145,14 @@ static void +@@ -153,6 +153,14 @@ static void launch_mailer(job_rec *jr) { pid_t pid; @@ -1294,7 +1307,7 @@ pid = xfork(); if (pid == 0) -@@ -173,7 +173,7 @@ launch_mailer(job_rec *jr) +@@ -173,7 +181,7 @@ launch_mailer(job_rec *jr) * options, which don't seem to be appropriate here. * Hopefully, this will keep all the MTAs happy. */ execl(SENDMAIL, SENDMAIL, "-FAnacron", "-odi", @@ -1303,7 +1316,7 @@ die_e("Can't exec " SENDMAIL); } /* parent */ -@@ -187,7 +187,7 @@ tend_mailer(job_rec *jr, int status) +@@ -187,7 +195,7 @@ tend_mailer(job_rec *jr, int status) { if (WIFEXITED(status) && WEXITSTATUS(status) != 0) complain("Tried to mail output of job `%s', " @@ -1312,7 +1325,7 @@ jr->ident, WEXITSTATUS(status)); else if (!WIFEXITED(status) && WIFSIGNALED(status)) complain("Tried to mail output of job `%s', " -@@ -207,19 +207,47 @@ launch_job(job_rec *jr) +@@ -207,19 +215,47 @@ launch_job(job_rec *jr) { pid_t pid; int fd; @@ -1335,7 +1348,8 @@ + jr->mailto = username (); /* create temporary file for stdout and stderr of the job */ - fd = jr->output_fd = temp_file(); +- fd = jr->output_fd = temp_file(); ++ fd = jr->output_fd = temp_file(jr); /* write mail header */ xwrite(fd, "From: "); + xwrite(fd, "Anacron <"); @@ -1363,3 +1377,11 @@ jr->mail_header_size = file_size(fd); pid = xfork(); +@@ -263,6 +299,7 @@ tend_job(job_rec *jr, int status) + jr->job_pid = 0; + running_jobs--; + if (mail_output) launch_mailer(jr); ++ if (unlink(jr->temp_file_path)) die_e("Can't unlink temporary file"); + xclose(jr->output_fd); + } +
OpenPGP_0x903649294C33F9B7.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature