Subject: [bug#65793] [PATCH] gnu: rottlog: Add gawk as an input.

From: Skyler <[email-masked]>
Date: Thu, 07 Sep 2023 02:02:24 +0000

Hello,

Just to provide some context beyond what was appropriate to include in the commit message, I've been experiencing an issue where rottlog deletes the /tmp directory every time it runs at noon. I speculate that it is due to these lines:

```
0025 BASE_TMP_DIR="/tmp"
....
1638 local tmpd=${BASE_TMP_DIR}/`awk 'BEGIN { srand(); for (i=1;i<21;i++) { a=95; while (a > 90 && a < 97) { a=65+int(50*rand())}; printf("%c", a) } }'`
1639 [ -e "$tmpd" ] && rm -rf "$tmpd"
```

If awk is not available, then the backtick substitution will be empty. There should be an error message printed to stderr, but this will not be captured by the backticks. So the expression on line 1638 will resolve to just /tmp, and then 1639 will delete the directory.

I have not actually seen the error messages in logs or similar, I just updated the package definition and the problem stopped happening. When I reverted the change, the problem started occurring again. I tested it by changing my /root/.config/guix/channels.scm to reference a local mirror of guix (with the patch added), pulling, and reconfiguring. I adding gawk to the inputs without updating the patch-paths phase, but this did not resolve the issue.

There are some other places where rottlog uses command substitution, which includes coreutils commands, grep, and at least one command from util-linux-with-udev. Some of them are included in inputs, but none of them are in the patch-paths phase. If this patch is fine, I can submit ones for the other packages within the next couple of weeks.

Thanks,
Skyler
------- Original Message -------
On Wednesday, September 6th, 2023 at 7:01 PM, Skyler <[email-masked]> wrote:

> This avoids an issue where rottlog will delete the entire /tmp directory
> if gawk is not installed.
>
> * gnu/packages/admin.scm (rottlog): Add gawk input, also update the
> patch-paths build phase for awk invocations.
> ---
> gnu/packages/admin.scm | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
> index 604cd70c02..ea437e9f26 100644
> --- a/gnu/packages/admin.scm
> +++ b/gnu/packages/admin.scm
> @@ -1931,7 +1931,11 @@ (define-public rottlog
> (lambda* (#:key inputs #:allow-other-keys)
> (substitute* "rc/rc"
> (("/usr/sbin/sendmail")
> - (search-input-file inputs "/bin/mail")))))
> + (search-input-file inputs "/bin/mail")))
> + (with-fluids ((%default-port-encoding "ISO-8859-1"))
> + (substitute* "src/rottlog"
> + (("awk")
> + (search-input-file inputs "/bin/awk"))))))
> (add-after 'build 'set-packdir
> (lambda _
> ;; Set a default location for archived logs.
> @@ -1950,7 +1954,7 @@ (define-public rottlog
> (lambda _
> (invoke "make" "install-info"))))))
> (native-inputs (list autoconf automake texinfo util-linux)) ; for 'cal'
> - (inputs (list coreutils mailutils))
> + (inputs (list coreutils gawk mailutils))
> (home-page "https://www.gnu.org/software/rottlog/")
> (synopsis "Log rotation and management")
> (description
>
> base-commit: e365c26a34fa485f9af46538fcea128db681c33d
> --
> 2.41.0