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

[regression] Re: [PATCHv2 10/15] drop length limitations on gecos-derived names and emails

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Jan 24, 2013, 23:21 UTC
Message-ID
<20130124232146.GA17458@google.com>
In-Reply-To
<20120521231017.GJ10981@sigill.intra.peff.net>
Hi Jeff,
Jeff King wrote:
> When we pull the user's name from the GECOS field of the
> passwd file (or generate an email address based on their
> username and hostname), we put the result into a
> static buffer.
[...]
> The conversion is mostly mechanical: replace string copies
> with strbuf equivalents, and access the strbuf.buf directly.
> There are a few exceptions:
This broke /etc/mailname handling.  Before:
	$ git var GIT_COMMITTER_IDENT
	Jonathan Nieder <jrn@mailname.example.com> 1359069165 -0800
After:
	$ git var GIT_COMMITTER_IDENT
	Jonathan Nieder <mailname.example.com> 1359069192 -0800
The cause:
[...]
> --- a/ident.c
> +++ b/ident.c
> @@ -19,42 +18,27 @@ int user_ident_explicitly_given;
[...]
Show 11 quoted lines
> -static int add_mailname_host(char *buf, size_t len)
> +static int add_mailname_host(struct strbuf *buf)
>  {
>  	FILE *mailname;
>  
> @@ -65,7 +49,7 @@ static int add_mailname_host(char *buf, size_t len)
>  				strerror(errno));
>  		return -1;
>  	}
> -	if (!fgets(buf, len, mailname)) {
> +	if (strbuf_getline(buf, mailname, '\n') == EOF) {
This clears the strbuf.
How about something like this as a quick fix?
Reported-by: Mihai Rusu <dizzy@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
diff --git a/ident.c b/ident.c
index 73a06a1..cabd73f 100644
--- a/ident.c
+++ b/ident.c
@@ -41,6 +41,7 @@ static void copy_gecos(const struct passwd *w, struct strbuf *name)
 static int add_mailname_host(struct strbuf *buf)
 {
 	FILE *mailname;
+	struct strbuf mailnamebuf = STRBUF_INIT;
 
 	mailname = fopen("/etc/mailname", "r");
 	if (!mailname) {
@@ -49,14 +50,17 @@ static int add_mailname_host(struct strbuf *buf)
 				strerror(errno));
 		return -1;
 	}
-	if (strbuf_getline(buf, mailname, '\n') == EOF) {
+	if (strbuf_getline(&mailnamebuf, mailname, '\n') == EOF) {
 		if (ferror(mailname))
 			warning("cannot read /etc/mailname: %s",
 				strerror(errno));
+		strbuf_release(&mailnamebuf);
 		fclose(mailname);
 		return -1;
 	}
 	/* success! */
+	strbuf_addbuf(buf, &mailnamebuf);
+	strbuf_release(&mailnamebuf);
 	fclose(mailname);
 	return 0;
 }
Previous: Jeff KingNext: Jeff King
Message 29 of 45 in “ident cleanups and bugfixes”
  1. 0/13 ident cleanups and bugfixesJeff King, May 18, 2012
  2. 01/13 ident: split setup_ident into separate functionsJeff King, May 18, 2012
  3. 02/13 http-push: do not access git_default_email directlyJeff King, May 18, 2012
  4. 03/13 fmt-merge-msg: don't use static buffer in record_personJeff King, May 18, 2012
  5. 04/13 move identity config parsing to ident.cJeff King, May 18, 2012
  6. 05/13 move git_default_* variables to ident.cJeff King, May 18, 2012
  7. Junio C HamanoMay 21, 2012
  8. Jeff KingMay 21, 2012
  9. Jeff KingMay 21, 2012
  10. 06/13 format-patch: use default email for generating message idsJeff King, May 18, 2012
  11. Junio C HamanoMay 21, 2012
  12. Jeff KingMay 21, 2012
  13. 07/13 fmt_ident: drop IDENT_WARN_ON_NO_NAME codeJeff King, May 18, 2012
  14. 08/13 ident: don't write fallback username into git_default_nameJeff King, May 18, 2012
  15. Junio C HamanoMay 21, 2012
  16. Jeff KingMay 21, 2012
  17. Junio C HamanoMay 21, 2012
  18. 0/15 ident cleanups git_default_nameJeff King, May 21, 2012
  19. 01/15 ident: split setup_ident into separate functionsJeff King, May 21, 2012
  20. 02/15 http-push: do not access git_default_email directlyJeff King, May 21, 2012
  21. 03/15 fmt-merge-msg: don't use static buffer in record_personJeff King, May 21, 2012
  22. 04/15 move identity config parsing to ident.cJeff King, May 21, 2012
  23. 05/15 move git_default_* variables to ident.cJeff King, May 21, 2012
  24. 06/15 ident: trim trailing newline from /etc/mailnameJeff King, May 21, 2012
  25. 07/15 format-patch: use default email for generating message idsJeff King, May 21, 2012
  26. 08/15 fmt_ident: drop IDENT_WARN_ON_NO_NAME codeJeff King, May 21, 2012
  27. 09/15 ident: don't write fallback username into git_default_nameJeff King, May 21, 2012
  28. 10/15 drop length limitations on gecos-derived names and emailsJeff King, May 21, 2012
  29. [regression] Re: [PATCHv2 10/15] drop length limitations on gecos-derived names and emailsJonathan Nieder, Jan 24, 2013
  30. Jeff KingJan 25, 2013
  31. Junio C HamanoJan 25, 2013
  32. Jeff KingJan 25, 2013
  33. 11/15 ident: report passwd errors with a more friendly messageJeff King, May 21, 2012
  34. 12/15 ident: use full dns names to generate email addressesJeff King, May 21, 2012
  35. 13/15 ident: use a dynamic strbuf in fmt_identJeff King, May 21, 2012
  36. 14/15 ident: trim whitespace from default name/emailJeff King, May 21, 2012
  37. Junio C HamanoMay 22, 2012
  38. Jeff KingMay 22, 2012
  39. Junio C HamanoMay 22, 2012
  40. 15/15 format-patch: refactor get_patch_filenameJeff King, May 21, 2012
  41. 09/13 drop length limitations on gecos-derived names and emailsJeff King, May 18, 2012
  42. 10/13 ident: report passwd errors with a more friendly messageJeff King, May 18, 2012
  43. 11/13 ident: use full dns names to generate email addressesJeff King, May 18, 2012
  44. 12/13 ident: use a dynamic strbuf in fmt_identJeff King, May 18, 2012
  45. 13/13 format-patch: refactor get_patch_filenameJeff King, May 18, 2012

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.