All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Gautier <mg@max.gautier.name>
To: git@vger.kernel.org
Cc: "Lénaïc Huard" <lenaic@lhuard.fr>,
	"Derrick Stolee" <stolee@gmail.com>,
	"Patrick Steinhardt" <ps@pks.im>, "Jeff King" <peff@peff.net>,
	"Junio C Hamano" <gitster@pobox.com>
Subject: Re: [PATCH v2 4/6] maintenance: cleanup $XDG_CONFIG_HOME/systemd/user
Date: Sat, 23 Mar 2024 12:07:21 +0100	[thread overview]
Message-ID: <Zf636bsHs9woXRAS@framework> (raw)
In-Reply-To: <20240322221327.12204-5-mg@max.gautier.name>

On Fri, Mar 22, 2024 at 11:11:09PM +0100, Max Gautier wrote:
>  
> +/*
> + * TODO: in the future (~2026 ?) remove this cleanup code
> + */
> +static void systemd_delete_user_unit(char const *unit)
> +{
> +	char const	file_start_stale[] =	"# This file was created and is"
> +						" maintained by Git.";
> +	char		file_start_user[sizeof(file_start_stale)] = {'\0'};
> +
> +	char *filename = xdg_config_home_for("systemd/user", unit);
> +	int handle = open(filename, O_RDONLY);
> +
> +	/*
> +	 * Check this is actually our file and we're not removing a legitimate
> +	 * user override.
> +	 */
> +	if (handle == -1 && !is_missing_file_error(errno))
> +		warning(_("failed to delete '%s'"), filename);
> +	else {
> +		read(handle, file_start_user, sizeof(file_start_stale) - 1);

Actually that fails -Werror because I don't check read return.
Alternative below (on top of this one), with one question:
Are VLA using size_t const OK ? It's folded to a constant array by gcc
but I don't know if that causes portability problem with other platforms
? I can always repeat the sizeof expr if it's a problematic construct.

-- >8 --

diff --git a/builtin/gc.c b/builtin/gc.c
index 99b158e481..7fb25ea2b1 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -2332,11 +2332,14 @@ static int systemd_set_units_state(int enable)
 /*
  * TODO: in the future (~2026 ?) remove this cleanup code
  */
+
 static void systemd_delete_user_unit(char const *unit)
 {
 	char const	file_start_stale[] =	"# This file was created and is"
 						" maintained by Git.";
-	char		file_start_user[sizeof(file_start_stale)] = {'\0'};
+	size_t const	length = sizeof(file_start_stale);
+	char		file_start_user[length] = {'\0'};
+
 
 	char *filename = xdg_config_home_for("systemd/user", unit);
 	int handle = open(filename, O_RDONLY);
@@ -2348,14 +2351,14 @@ static void systemd_delete_user_unit(char const *unit)
 	if (handle == -1 && !is_missing_file_error(errno))
 		warning(_("failed to delete '%s'"), filename);
 	else {
-		read(handle, file_start_user, sizeof(file_start_stale) - 1);
-		close(handle);
-		if (strcmp(file_start_stale, file_start_user) == 0) {
+		if (length - 1 == read(handle, file_start_user, length - 1) &&
+				strcmp(file_start_stale, file_start_user) == 0) {
 			if (unlink(filename) == 0)
 				warning(_("deleted stale unit file '%s'"), filename);
 			else if (!is_missing_file_error(errno))
 				warning(_("failed to delete '%s'"), filename);
 		}
+		close(handle);
 	}
 
 	free(filename);

-- 
Max Gautier

  parent reply	other threads:[~2024-03-23 11:07 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-18 15:31 [RFC PATCH 0/5] maintenance: use packaged systemd units Max Gautier
2024-03-18 15:31 ` [RFC PATCH 1/5] maintenance: package " Max Gautier
2024-03-21 12:37   ` Patrick Steinhardt
2024-03-21 13:07     ` Max Gautier
2024-03-21 13:22       ` Patrick Steinhardt
2024-03-21 13:38     ` Max Gautier
2024-03-21 14:44       ` Patrick Steinhardt
2024-03-21 14:49         ` Max Gautier
2024-03-21 14:48       ` Max Gautier
2024-03-18 15:31 ` [RFC PATCH 2/5] maintenance: add fixed random delay to systemd timers Max Gautier
2024-03-21 12:37   ` Patrick Steinhardt
2024-03-21 13:13     ` Max Gautier
2024-03-18 15:31 ` [RFC PATCH 3/5] maintenance: use packaged systemd units Max Gautier
2024-03-19 12:09   ` Max Gautier
2024-03-19 17:17     ` Eric Sunshine
2024-03-19 18:19       ` Junio C Hamano
2024-03-19 19:38       ` Max Gautier
2024-03-21 12:37   ` Patrick Steinhardt
2024-03-21 13:19     ` Max Gautier
2024-03-18 15:31 ` [RFC PATCH 4/5] maintenance: update systemd scheduler docs Max Gautier
2024-03-21 12:37   ` Patrick Steinhardt
2024-03-18 15:31 ` [RFC PATCH 5/5] DON'T APPLY YET: maintenance: remove cleanup code Max Gautier
2024-03-22 22:11 ` [PATCH v2 0/6] maintenance: use packaged systemd units Max Gautier
2024-03-22 22:11   ` [PATCH v2 1/6] maintenance: use systemd timers builtin randomization Max Gautier
2024-03-22 22:11   ` [PATCH v2 2/6] maintenance: use packaged systemd units Max Gautier
2024-03-23  8:38     ` Eric Sunshine
2024-03-23  9:52       ` Max Gautier
2024-03-22 22:11   ` [PATCH v2 3/6] maintenance: simplify systemctl calls Max Gautier
2024-03-22 23:09     ` Eric Sunshine
2024-03-23 10:25       ` Max Gautier
2024-03-22 22:11   ` [PATCH v2 4/6] maintenance: cleanup $XDG_CONFIG_HOME/systemd/user Max Gautier
2024-03-22 22:38     ` Kristoffer Haugsbakk
2024-03-22 22:43       ` Junio C Hamano
2024-03-23 11:07     ` Max Gautier [this message]
2024-03-24 15:45       ` Phillip Wood
2024-03-25  8:36         ` Max Gautier
2024-03-25 16:39           ` Phillip Wood
2024-03-27 16:20             ` Max Gautier
2024-03-22 22:11   ` [PATCH v2 5/6] maintenance: update systemd scheduler docs Max Gautier
2024-03-22 22:11   ` [PATCH v2 6/6] maintenance: update tests for systemd scheduler Max Gautier
2024-03-22 23:02     ` Eric Sunshine
2024-03-23 10:28       ` Max Gautier
2024-03-24 14:54   ` [PATCH v2 0/6] maintenance: use packaged systemd units Phillip Wood
2024-03-24 17:03     ` Eric Sunshine
2024-03-25 10:08       ` phillip.wood123
2024-03-25  8:32     ` Max Gautier
2024-03-25 10:06       ` phillip.wood123
2024-03-25 12:27         ` Max Gautier
2024-03-25 16:39           ` Phillip Wood
2024-03-25 13:45         ` Max Gautier
2024-03-25 16:39           ` Phillip Wood
2024-03-27 16:21             ` Max Gautier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Zf636bsHs9woXRAS@framework \
    --to=mg@max.gautier.name \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=lenaic@lhuard.fr \
    --cc=peff@peff.net \
    --cc=ps@pks.im \
    --cc=stolee@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.