git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/2] ident: stop assuming that `gw_gecos` is writable

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 27, 2025, 21:15 UTC
Message-ID
<xmqqwmdb5bt8.fsf@gitster.g>
In-Reply-To
<045c11dc1d51690eed4dc07da26dcace612f786c.1740671049.git.gitgitgadget@gmail.com>

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com> writes:

Show 15 quoted lines
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> In 590e081dea7c (ident: add NO_GECOS_IN_PWENT for systems without
> pw_gecos in struct passwd, 2011-05-19), code was introduced to iterate
> over the `gw_gecos` field; The loop variable is of type `char *`, which
> assumes that `gw_gecos` is writable.
>
> However, it is not necessarily writable (and it is a bad idea to have it
> writable in the first place), so let's switch the loop variable type to
> `const char *`.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  ident.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Can we have a bit more details here (not in the commit but after the three-dash line, meant for context) why the change from 2011 needs a "hotfix" today? Has something in the build environment change? An updated header file has changed definition for "struct passwd", or something silly like that? Even though POSIX.1 does not define gecos in its struct passwd in <pwd.h>, other string members like pw_name and pw_dir are writable, which I found funny, and makes me puzzled why this code from 2011 needs a hotfix all of the sudden.

Show 13 quoted lines
> diff --git a/ident.c b/ident.c
> index caf41fb2a98..967895d8850 100644
> --- a/ident.c
> +++ b/ident.c
> @@ -59,7 +59,7 @@ static struct passwd *xgetpwuid_self(int *is_bogus)
>  
>  static void copy_gecos(const struct passwd *w, struct strbuf *name)
>  {
> -	char *src;
> +	const char *src;
>  
>  	/* Traditionally GECOS field had office phone numbers etc, separated
>  	 * with commas.  Also & stands for capitalized form of the login name.

The patch text itself looks perfectly fine, so I am not opposed to its eventual application. Even though we do declare "src" as non-const, we only use it to read from it, so declaring it as const pointer is perfectly fine and more appropriate.

But I do not see any urgency relative to Git 2.48.0 (or Git 2.48.1 for that matter) to mark this as "hotfix" implying that it should be included in 2.49-rc1 in either the patch or the proposed commit log message.

Thanks.
Previous: Johannes Schindelin via GitGitGadgetNext: Johannes Schindelin via GitGitGadget
Message 3 of 14 in “Hot fixes from Git for Windows v2.49.0-rc0”
  1. 0/2 Hot fixes from Git for Windows v2.49.0-rc0Johannes Schindelin via GitGitGadget, Feb 27, 2025
  2. 1/2 ident: stop assuming that `gw_gecos` is writableJohannes Schindelin via GitGitGadget, Feb 27, 2025
  3. Junio C HamanoFeb 27, 2025
  4. 2/2 meson: fix sortingJohannes Schindelin via GitGitGadget, Feb 27, 2025
  5. Patrick SteinhardtFeb 28, 2025
  6. 0/3 Hot fixes from Git for Windows v2.49.0-rc0Johannes Schindelin via GitGitGadget, Mar 6, 2025
  7. 1/3 ident: stop assuming that `gw_gecos` is writableJohannes Schindelin via GitGitGadget, Mar 6, 2025
  8. Patrick SteinhardtMar 6, 2025
  9. Johannes SchindelinMar 6, 2025
  10. Junio C HamanoMar 6, 2025
  11. Patrick SteinhardtMar 7, 2025
  12. Junio C HamanoMar 7, 2025
  13. 2/3 meson: fix sortingJohannes Schindelin via GitGitGadget, Mar 6, 2025
  14. 3/3 cmake: generalize the handling of the `CLAR_TEST_OBJS` listJohannes Schindelin via GitGitGadget, Mar 6, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.