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

[PATCH 1/3] trace.c: ensure NULL is not passed to printf

From
Brandon Casey <casey@nrlssc.navy.mil>
Date
Jan 6, 2011, 00:30 UTC
Message-ID
<gmeXEearzUOUEst4-B2b8sVUo0XhywYUDm7rCJikom1xi9tIroh9GnJRv-bJTzbCbvqI-4DOU3A@cipher.nrlssc.navy.mil>
From: Brandon Casey <drafnel@gmail.com>

GNU printf, and many others, will print the string "(null)" if a NULL pointer is passed as the argument to a "%s" format specifier. Some implementations (like on Solaris) do not detect a NULL pointer and will produce a segfault in this case.

So, fix this by ensuring that pointer variables do not contain the value NULL. Assign the string "(null)" to the variables are NULL.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
---
 trace.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/trace.c b/trace.c
index 02279b8..35d388d 100644
--- a/trace.c
+++ b/trace.c
@@ -154,6 +154,7 @@ static const char *quote_crnl(const char *path)
 /* FIXME: move prefix to startup_info struct and get rid of this arg */
 void trace_repo_setup(const char *prefix)
 {
+	const char *git_work_tree;
 	char cwd[PATH_MAX];
 	char *trace = getenv("GIT_TRACE");
 
@@ -164,8 +165,14 @@ void trace_repo_setup(const char *prefix)
 	if (!getcwd(cwd, PATH_MAX))
 		die("Unable to get current working directory");
 
+	if (!(git_work_tree = get_git_work_tree()))
+		git_work_tree = "(null)";
+
+	if (!prefix)
+		prefix = "(null)";
+
 	trace_printf("setup: git_dir: %s\n", quote_crnl(get_git_dir()));
-	trace_printf("setup: worktree: %s\n", quote_crnl(get_git_work_tree()));
+	trace_printf("setup: worktree: %s\n", quote_crnl(git_work_tree));
 	trace_printf("setup: cwd: %s\n", quote_crnl(cwd));
 	trace_printf("setup: prefix: %s\n", quote_crnl(prefix));
 }
-- 
1.7.3.1
Next: Brandon Casey
Message 1 of 5 in “trace.c: ensure NULL is not passed to printf”
  1. 1/3 trace.c: ensure NULL is not passed to printfBrandon Casey, Jan 6, 2011
  2. 2/3 t0001,t1510,t3301: use sane_unset which always returns with status 0Brandon Casey, Jan 6, 2011
  3. Junio C HamanoJan 6, 2011
  4. Brandon CaseyJan 6, 2011
  5. 3/3 t3032: limit sed branch labels to 8 charactersBrandon Casey, Jan 6, 2011

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.