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

[PATCH] Workaround for ai_canonname sometimes coming back as null

From
Augie Fackler <durin42@gmail.com>
Date
Apr 29, 2009, 21:48 UTC
Message-ID
<9C355DCC-0240-4B9E-83CA-083B51C2E34C@gmail.com>

Fix a weird bug where git-daemon was segfaulting when started by sh(1) because ai_canonname was null.

--- I'm not really sure why being started by sh has any measurable impact. git-daemon works fine if I start it manually from an interactive prompt.

Easy reproduction script (the git clone command will fail reliably for me without this patch):

#!/bin/sh
mkdir temp
cd temp
mkdir narf
cd narf
git init
echo a > a
git add a
git commit -am 'hi'
cd ..
git daemon --base-path="$(pwd)"\
  --listen=127.0.0.1\
  --export-all\
  --pid-file=gitdaemon.pid \
  --detach --reuseaddr
git clone git://127.0.0.1/narf bla
kill `cat gitdaemon.pid`
  daemon.c |    5 ++++-
  1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/daemon.c b/daemon.c
index 13401f1..b1fede0 100644
--- a/daemon.c
+++ b/daemon.c
@@ -459,7 +459,10 @@ static void parse_extra_args(char *extra_args,  
int buflen)
  				inet_ntop(AF_INET, &sin_addr->sin_addr,
  					  addrbuf, sizeof(addrbuf));
  				free(canon_hostname);
-				canon_hostname = xstrdup(ai->ai_canonname);
+				if (ai->ai_canonname)
+					canon_hostname = xstrdup(ai->ai_canonname);
+				else
+					canon_hostname = "unknown";
  				free(ip_address);
  				ip_address = xstrdup(addrbuf);
  				break;
-- 
1.6.3.rc3.12.gb7937
Next: Alex Riesen
Message 1 of 11 in “Workaround for ai_canonname sometimes coming back as null”
  1. Workaround for ai_canonname sometimes coming back as nullAugie Fackler, Apr 29, 2009
  2. Alex RiesenApr 29, 2009
  3. Augie FacklerApr 29, 2009
  4. Alex RiesenApr 29, 2009
  5. Alex RiesenApr 29, 2009
  6. Don't crash if ai_canonname comes back as nullAugie Fackler, Apr 29, 2009
  7. Junio C HamanoApr 29, 2009
  8. Augie FacklerApr 29, 2009
  9. Jon LoeligerApr 30, 2009
  10. Junio C HamanoApr 30, 2009
  11. Alex RiesenApr 29, 2009

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.