Skip to content

Commit

Permalink
trace.c: ensure NULL is not passed to printf
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Brandon Casey authored and Junio C Hamano committed Jan 6, 2011
1 parent 685e9d9 commit e83c267
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand All @@ -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));
}

0 comments on commit e83c267

Please sign in to comment.