summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Brandon Casey <drafnel@gmail.com>2011-01-05 18:30:01 -0600
committerLibravatar Junio C Hamano <gitster@pobox.com>2011-01-06 12:21:49 -0800
commite83c267f71dfef72926807cd69aa8d570e57714e (patch)
tree897a5901a620548c880186b0566ee7c836888244
parentGit 1.7.4-rc1 (diff)
downloadtgif-e83c267f71dfef72926807cd69aa8d570e57714e.tar.xz
trace.c: ensure NULL is not passed to printf
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>
-rw-r--r--trace.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/trace.c b/trace.c
index 02279b82c4..35d388dce4 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));
}