builtin/bugreport.c: use thread-safe localtime_r()
To generate its filename, the 'git bugreport' builtin asks the system
for the current time with 'localtime()'. Since this uses a shared
buffer, it is not thread-safe.
Even though 'git bugreport' is not multi-threaded, using localtime() can
trigger some static analysis tools to complain, and a quick
$ git grep -oh 'localtime\(_.\)\?' -- **/*.c | sort | uniq -c
shows that the only usage of the thread-unsafe 'localtime' is in a piece
of documentation.
So, convert this instance to use the thread-safe version for
consistency, and to appease some analysis tools.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
parent
72ffeb997e
commit
4f6460df55
|
|
@ -125,6 +125,7 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix)
|
||||||
struct strbuf report_path = STRBUF_INIT;
|
struct strbuf report_path = STRBUF_INIT;
|
||||||
int report = -1;
|
int report = -1;
|
||||||
time_t now = time(NULL);
|
time_t now = time(NULL);
|
||||||
|
struct tm tm;
|
||||||
char *option_output = NULL;
|
char *option_output = NULL;
|
||||||
char *option_suffix = "%Y-%m-%d-%H%M";
|
char *option_suffix = "%Y-%m-%d-%H%M";
|
||||||
const char *user_relative_path = NULL;
|
const char *user_relative_path = NULL;
|
||||||
|
|
@ -147,7 +148,7 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix)
|
||||||
strbuf_complete(&report_path, '/');
|
strbuf_complete(&report_path, '/');
|
||||||
|
|
||||||
strbuf_addstr(&report_path, "git-bugreport-");
|
strbuf_addstr(&report_path, "git-bugreport-");
|
||||||
strbuf_addftime(&report_path, option_suffix, localtime(&now), 0, 0);
|
strbuf_addftime(&report_path, option_suffix, localtime_r(&now, &tm), 0, 0);
|
||||||
strbuf_addstr(&report_path, ".txt");
|
strbuf_addstr(&report_path, ".txt");
|
||||||
|
|
||||||
switch (safe_create_leading_directories(report_path.buf)) {
|
switch (safe_create_leading_directories(report_path.buf)) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue