зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
685e9d9145
Коммит
e83c267f71
9
trace.c
9
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));
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче