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

Reply via email to