Control: tags -1 confirmed On 2025-05-30 22:22:24 +0700, Lin Qigang wrote: > 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.
Please go ahead without these additional changes. We are in hard freeze which means only targetted fixes. So please only include the two fixes for #1092269 and 1106000 in your upload. Cheers > > 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); > + } > + -- Sebastian Ramacher