From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 12 04:07:53 2024 Received: (at submit) by debbugs.gnu.org; 12 Oct 2024 08:07:53 +0000 Received: from localhost ([127.0.0.1]:36219 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1szXAH-0004AI-85 for submit@debbugs.gnu.org; Sat, 12 Oct 2024 04:07:53 -0400 Received: from lists.gnu.org ([209.51.188.17]:39786) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1szXAE-0004AA-R9 for submit@debbugs.gnu.org; Sat, 12 Oct 2024 04:07:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1szXA0-0000W0-Or for guix-patches@gnu.org; Sat, 12 Oct 2024 04:07:36 -0400 Received: from mout01.posteo.de ([185.67.36.65]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1szX9y-00077I-Gj for guix-patches@gnu.org; Sat, 12 Oct 2024 04:07:36 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 6C2F3240027 for ; Sat, 12 Oct 2024 10:07:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1728720450; bh=dSPoyqwLA88e7U/2SUF0tiEViJVcAR6zPOJO6IElitE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=hCehleIC+c+eqUxN8CV7fcKzIrMJE81uNDxXrs1woJ7m90MoAtMjVu5lHWGFK0Yi7 WUlFdqCZgcz4MKRYuosCSC2ZmVQALYMZDwJhzawos3vimzo2YRtAqYU1fskFQcWwev u3b8xP1e46NTjWaDK41jR5zQ7TnfGmHVBB8Pk6VWHval2DoeFBr8+iRbeIQbSfVSAv NMyMLGJFKIqysVc64IfJE51eJkamgK4dnuaQnmMPsoKCR2F3H9hyi1LORwWMzKe+Fn HhRR8FoaiLmBETMV++qV9mLkHdZTXtbFb7RoyfSNj2CtJRPqZnrYGS4BiKyv8mKjwR woV6MdqlAdYTw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4XQbh173Fgz6tm8; Sat, 12 Oct 2024 10:07:29 +0200 (CEST) From: Dariqq To: guix-patches@gnu.org Subject: [PATCH] gnu: system: Privilege programs after creating accounts. Date: Sat, 12 Oct 2024 07:55:58 +0000 Message-ID: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=185.67.36.65; envelope-from=dariqq@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit Cc: Dariqq X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Ensure that users and groups are already created when the privileging script runs. The order these scripts appear in the folded activation-service depends on the order these services are instantiated in the operating-system. Fixes https://issues.guix.gnu.org/73680. * gnu/system.scm (operating-system-default-essential-services): Move privileged-program-service above account-service. (hurd-default-essential-services): Likewise. Change-Id: I662fb1eff42e4088496fccb76e0efbf2b1da096e --- Hi, I tested that this fixes my problem of setting something suid to a new user. For the hurd change i only looked at the final value of activation-service type in hurd-barebones-os and confirmed that '#' is before # (which is the privileging script). I would prefer a solution that also models this dependency to not depend on input order but this might be tricky. gnu/system.scm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index 44f93f91d1..c19730b331 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -809,6 +809,11 @@ (define (operating-system-default-essential-services os) %shepherd-root-service (pam-root-service (operating-system-pam-services os)) + ;; Make sure that privileged-programs activation script + ;; runs after accounts are created + (service privileged-program-service-type + (append (operating-system-privileged-programs os) + (operating-system-setuid-programs os))) (account-service (append (operating-system-accounts os) (operating-system-groups os)) (operating-system-skeletons os)) @@ -826,9 +831,6 @@ (define (operating-system-default-essential-services os) (operating-system-environment-variables os)) (service host-name-service-type host-name) procs root-fs - (service privileged-program-service-type - (append (operating-system-privileged-programs os) - (operating-system-setuid-programs os))) (service profile-service-type (operating-system-packages os)) boot-fs non-boot-fs @@ -850,6 +852,11 @@ (define (hurd-default-essential-services os) (service shepherd-root-service-type) (service user-processes-service-type) + ;; Make sure that privileged-programs activation script + ;; runs after accounts are created + (service privileged-program-service-type + (append (operating-system-privileged-programs os) + (operating-system-setuid-programs os))) (account-service (append (operating-system-accounts os) (operating-system-groups os)) (operating-system-skeletons os)) @@ -866,9 +873,6 @@ (define (hurd-default-essential-services os) (list `("hosts" ,hosts-file))) (service hosts-service-type (local-host-entries host-name))) - (service privileged-program-service-type - (append (operating-system-privileged-programs os) - (operating-system-setuid-programs os))) (service profile-service-type (operating-system-packages os))))) (define* (operating-system-services os) base-commit: b8fd792ea267cb920da0651074a533d8abf00488 -- 2.46.0 From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 18 09:23:00 2024 Received: (at 73767) by debbugs.gnu.org; 18 Oct 2024 13:23:00 +0000 Received: from localhost ([127.0.0.1]:37544 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t1mwV-0007Y9-Rs for submit@debbugs.gnu.org; Fri, 18 Oct 2024 09:23:00 -0400 Received: from mout01.posteo.de ([185.67.36.65]:44059) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t1mwR-0007Xq-Pc for 73767@debbugs.gnu.org; Fri, 18 Oct 2024 09:22:58 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id E7106240027 for <73767@debbugs.gnu.org>; Fri, 18 Oct 2024 15:22:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1729257746; bh=Iv4qLop/AEjHNQ0EoaN0uECOQi9VZkw3Mndv/q5Z95Y=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=ekjky0kRs9B1yvCAsWbMLLZtIy1bAGU7L0qvSksDnvd57VUoxw6/mP0KWx1eR4XlE AOXyxeLEpaSYpK2kJr3dhtI1lgoZhtZVayDGqRp0PV0o+jfutbeRzGf1kWLDVYMcYo bBv5Lhv9TNgEVnqzAQyzaADpvB1c4OGuWOUm+Ut3zRrDq/c6kkudLId37O9UpqEBRe lN73xPh7dabqdm26T7wLtoisZj9GQZS4hOsafyR/1phgF4xVmSTZ5jrnT9SUra7uzY 0asKRl5JWeLyodikJmfU4s7na8FnVQQM4E2DDb99QAPcOuXrnv+ywVW4ieOhwT+yhM g9X1E1LH+JL5w== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4XVQNd4czXz9rxG; Fri, 18 Oct 2024 15:22:25 +0200 (CEST) From: Dariqq To: 73767@debbugs.gnu.org Subject: [PATCH v2 1/2] gnu: system: Privilege programs after creating accounts. Date: Fri, 18 Oct 2024 13:21:22 +0000 Message-ID: <99be45a2fa553c2174a7062056ac7fced444ad5e.1729257683.git.dariqq@posteo.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 73767 Cc: Dariqq X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ensure that users and groups are already created when the privileging script runs. The order these scripts appear in the folded activation-service depends on the order these services are instantiated in the operating-system. Fixes https://issues.guix.gnu.org/73680. * gnu/system.scm (operating-system-default-essential-services): Move privileged-program-service above account-service. (hurd-default-essential-services): Likewise. Change-Id: I662fb1eff42e4088496fccb76e0efbf2b1da096e --- gnu/system.scm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index 44f93f91d1..c19730b331 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -809,6 +809,11 @@ (define (operating-system-default-essential-services os) %shepherd-root-service (pam-root-service (operating-system-pam-services os)) + ;; Make sure that privileged-programs activation script + ;; runs after accounts are created + (service privileged-program-service-type + (append (operating-system-privileged-programs os) + (operating-system-setuid-programs os))) (account-service (append (operating-system-accounts os) (operating-system-groups os)) (operating-system-skeletons os)) @@ -826,9 +831,6 @@ (define (operating-system-default-essential-services os) (operating-system-environment-variables os)) (service host-name-service-type host-name) procs root-fs - (service privileged-program-service-type - (append (operating-system-privileged-programs os) - (operating-system-setuid-programs os))) (service profile-service-type (operating-system-packages os)) boot-fs non-boot-fs @@ -850,6 +852,11 @@ (define (hurd-default-essential-services os) (service shepherd-root-service-type) (service user-processes-service-type) + ;; Make sure that privileged-programs activation script + ;; runs after accounts are created + (service privileged-program-service-type + (append (operating-system-privileged-programs os) + (operating-system-setuid-programs os))) (account-service (append (operating-system-accounts os) (operating-system-groups os)) (operating-system-skeletons os)) @@ -866,9 +873,6 @@ (define (hurd-default-essential-services os) (list `("hosts" ,hosts-file))) (service hosts-service-type (local-host-entries host-name))) - (service privileged-program-service-type - (append (operating-system-privileged-programs os) - (operating-system-setuid-programs os))) (service profile-service-type (operating-system-packages os))))) (define* (operating-system-services os) base-commit: 061e0acd596262420facef7c2d1fc9cc4327d75a -- 2.46.0 From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 18 09:23:03 2024 Received: (at 73767) by debbugs.gnu.org; 18 Oct 2024 13:23:03 +0000 Received: from localhost ([127.0.0.1]:37547 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t1mwY-0007YT-8y for submit@debbugs.gnu.org; Fri, 18 Oct 2024 09:23:03 -0400 Received: from mout02.posteo.de ([185.67.36.66]:51713) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t1mwW-0007Xw-Nz for 73767@debbugs.gnu.org; Fri, 18 Oct 2024 09:23:01 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id CEC31240101 for <73767@debbugs.gnu.org>; Fri, 18 Oct 2024 15:22:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1729257751; bh=Hhci1Dv6O8y4kvsQ9eEuDbrzzlKbB7JE6mjY6mZm6vg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: Content-Transfer-Encoding:From; b=U+bAnEN+bQ4CNixRAeq1y73pJDZSpTu3NstrucsmyFL1MjekfN/lyGqDuiWaET1OE sFf1NFj7wAI3ARr8c/e6SFxYiYQ+sxti5J0m7CwGmW7l4BfOPv2RNmhshdsWA17vGi 0ufTzCtM+wEELce94gr4PjiuORpJ5jRRFf16T8XWN4goY7cG+oNmkhmxcbOP/A1vf7 19F+iagCtR/h38kcOgMIWBA1CFwLZrQ3nuEkv7hVeznLf93VDe3FOKBbS6cclrobsp maXduaU2MjrTQOJ42vdigQwU0p6n7uTTsSKcNOOcrofkpZjunvfoURBY0DXycPWP79 lNw8Uj4IqW+/Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4XVQNk6LHWz9rxP; Fri, 18 Oct 2024 15:22:30 +0200 (CEST) From: Dariqq To: 73767@debbugs.gnu.org Subject: [PATCH v2 2/2] tests: Add activation test. Date: Fri, 18 Oct 2024 13:21:23 +0000 Message-ID: <9e16b82e73de5da03c2aa8763a970fbdd513a83d.1729257683.git.dariqq@posteo.net> In-Reply-To: <99be45a2fa553c2174a7062056ac7fced444ad5e.1729257683.git.dariqq@posteo.net> References: <99be45a2fa553c2174a7062056ac7fced444ad5e.1729257683.git.dariqq@posteo.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 73767 Cc: Dariqq X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Add a test to verify that accounts are available for activation scripts. * gnu/tests/base.scm (%activation-os): New variable. (run-activation-test): New procedure. (%test-activation): New variable. Change-Id: I59a191c5519475f256e81bdf2dc4cb01b96c31fe --- gnu/tests/base.scm | 121 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 120 insertions(+), 1 deletion(-) diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index e1a676ecd4..9430cbee12 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2018 Clément Lassieur ;;; Copyright © 2022 Maxim Cournoyer ;;; Copyright © 2022 Marius Bakke +;;; Copyright © 2024 Dariqq ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +25,7 @@ (define-module (gnu tests base) #:use-module (gnu image) #:use-module (gnu system) #:autoload (gnu system image) (system-image) + #:use-module (gnu system privilege) #:use-module (gnu system shadow) #:use-module (gnu system nss) #:use-module (gnu system vm) @@ -60,7 +62,8 @@ (define-module (gnu tests base) %test-root-unmount %test-cleanup %test-mcron - %test-nss-mdns)) + %test-nss-mdns + %test-activation)) (define %simple-os (simple-operating-system)) @@ -1105,3 +1108,119 @@ (define %test-nss-mdns "Test Avahi's multicast-DNS implementation, and in particular, test its glibc name service switch (NSS) module.") (value (run-nss-mdns-test)))) + + +;;; +;;; Activation: Order of activation scripts +;;; Create accounts before running scripts using them + +(define %activation-os + ;; System with a new user/group, a setuid/setgid binary and an activation script + (let* ((%hello-accounts + (list (user-group (name "hello") (system? #t)) + (user-account + (name "hello") + (group "hello") + (system? #t) + (comment "") + (home-directory "/var/empty")))) + (%hello-privileged + (list + (privileged-program + (program (file-append hello "/bin/hello")) + (setuid? #t) + (setgid? #t) + (user "hello") + (group "hello")))) + (%hello-activation + (with-imported-modules (source-module-closure + '((gnu build activation))) + #~(begin + (use-modules (gnu build activation)) + + (let ((user (getpwnam "hello"))) + (mkdir-p/perms "/run/hello" user #o755))))) + + (hello-service-type + (service-type + (name 'hello) + (extensions + (list (service-extension account-service-type + (const %hello-accounts)) + (service-extension activation-service-type + (const %hello-activation)) + (service-extension privileged-program-service-type + (const %hello-privileged)))) + (default-value #f) + (description "")))) + + (operating-system + (inherit %simple-os) + (services + (cons* (service hello-service-type) + (operating-system-user-services + %simple-os)))))) + +(define (run-activation-test name) + (define os + (marionette-operating-system + %activation-os)) + + (define test + (with-imported-modules '((gnu build marionette)) + #~(begin + (use-modules (gnu build marionette) + (srfi srfi-64)) + + (define marionette + (make-marionette (list #$(virtual-machine os)))) + + (test-runner-current (system-test-runner #$output)) + (test-begin "activation") + + (test-assert "directory exists" + (marionette-eval + '(file-exists? "/run/hello") + marionette)) + + (test-assert "directory correct permissions and owner" + (marionette-eval + '(let ((dir (stat "/run/hello")) + (user (getpwnam "hello"))) + (and (eqv? (stat:uid dir) + (passwd:uid user)) + (eqv? (stat:gid dir) + (passwd:gid user)) + (= (stat:perms dir) + #o0755))) + marionette)) + + (test-assert "privileged-program exists" + (marionette-eval + '(file-exists? "/run/privileged/bin/hello") + marionette)) + + (test-assert "privileged-program correct permissions and owner" + (marionette-eval + '(let ((binary (stat "/run/privileged/bin/hello")) + (user (getpwnam "hello")) + (group (getgrnam "hello"))) + (and (eqv? (stat:uid binary) + (passwd:uid user)) + (eqv? (stat:gid binary) + (group:gid group)) + (= (stat:perms binary) + (+ #o0555 ;; base + #o4000 ;; setuid + #o2000)))) ;; setgid + marionette)) + + (test-end)))) + + (gexp->derivation name test)) + +(define %test-activation + (system-test + (name "activation") + (description "Test that activation scripts are run in the correct order") + (value (run-activation-test name)))) -- 2.46.0 From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 24 06:15:34 2024 Received: (at 73767-done) by debbugs.gnu.org; 24 Oct 2024 10:15:34 +0000 Received: from localhost ([127.0.0.1]:33752 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t3usP-0002kf-Ja for submit@debbugs.gnu.org; Thu, 24 Oct 2024 06:15:34 -0400 Received: from eggs.gnu.org ([209.51.188.92]:38598) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t3usL-0002kK-VH; Thu, 24 Oct 2024 06:15:31 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t3url-00065z-W5; Thu, 24 Oct 2024 06:14:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=4fVcqhdL+Kd0SBTt34h//N2NPnpZ02c6oGfr9HSJFB4=; b=WcxVWvPojWLHC3FtobOP UXJVU5Cyi0YlHq7huD/0siTTEJqf1fXBSCK9RyPEF7s6YheVUcWIKTil0PFxALvU/gUMuqCNdOa+D wfNjEj7be/h3a4m15zvfPXieRupZa6HxUZav5SsEdHEEMLEaxCkZoYHjJ+xfxQaepQV3us4epYxJO DyMO7kpr9r8engOJRxI1w3pVSFwYX0btII3utFvncDj7rjONlQpx6RYKSthnLKkYC38RuqTyySy+J G0uUIPL29/KR3HpLeRw2s1wxhUC58vIGwFNoU9gdU/xloTKjqknqmzhKQB8/Dx7czSNHUxuMHyAWj nJoAtEtQr7/mNw==; From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Dariqq Subject: Re: [bug#73767] [PATCH] gnu: system: Privilege programs after creating accounts. In-Reply-To: (dariqq@posteo.net's message of "Sat, 12 Oct 2024 07:55:58 +0000") References: Date: Thu, 24 Oct 2024 12:14:50 +0200 Message-ID: <87bjz924f9.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 73767-done Cc: 73767-done@debbugs.gnu.org, 73680-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Dariqq, Dariqq skribis: > Ensure that users and groups are already created when the privileging scr= ipt > runs. The order these scripts appear in the folded activation-service dep= ends > on the order these services are instantiated in the operating-system. > > Fixes https://issues.guix.gnu.org/73680. > > * gnu/system.scm (operating-system-default-essential-services): Move > privileged-program-service above account-service. > (hurd-default-essential-services): Likewise. > > Change-Id: I662fb1eff42e4088496fccb76e0efbf2b1da096e [...] > I would prefer a solution that also models this dependency to not depend = on input order but this might be tricky. Yes, that would be best. I applied both patches and took the liberty to squash them: we usually arrange to have the bug-fix and the test that exhibits the bug in the same commit, for clarity. Thanks for the investigation & fix! Ludo=E2=80=99. From unknown Sat Sep 20 14:55:12 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 21 Nov 2024 12:24:11 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator