From e0f691e1fd62e631b1695111d2bed2b73cebfb9a Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 26 Jun 2018 02:55:25 +0900 Subject: [PATCH] tree-wide: use localtime_r() instead of localtime() Follow-up for e46acb7950a9f07ac60d772309de842c444ad2bd. --- src/basic/clock-util.c | 6 +++--- src/basic/log.c | 7 +++---- src/journal/journald-syslog.c | 7 +++---- src/timedate/timedated.c | 6 +++--- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/basic/clock-util.c b/src/basic/clock-util.c index 3ea016af0e..8555cc7952 100644 --- a/src/basic/clock-util.c +++ b/src/basic/clock-util.c @@ -90,13 +90,13 @@ int clock_is_localtime(const char* adjtime_path) { int clock_set_timezone(int *min) { const struct timeval *tv_null = NULL; struct timespec ts; - struct tm *tm; + struct tm tm; int minutesdelta; struct timezone tz; assert_se(clock_gettime(CLOCK_REALTIME, &ts) == 0); - assert_se(tm = localtime(&ts.tv_sec)); - minutesdelta = tm->tm_gmtoff / 60; + assert_se(localtime_r(&ts.tv_sec, &tm)); + minutesdelta = tm.tm_gmtoff / 60; tz.tz_minuteswest = -minutesdelta; tz.tz_dsttime = 0; /* DST_NONE */ diff --git a/src/basic/log.c b/src/basic/log.c index 48c094b548..f8ef751a93 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -401,7 +401,7 @@ static int write_to_syslog( .msg_iovlen = ELEMENTSOF(iovec), }; time_t t; - struct tm *tm; + struct tm tm; if (syslog_fd < 0) return 0; @@ -409,11 +409,10 @@ static int write_to_syslog( xsprintf(header_priority, "<%i>", level); t = (time_t) (now(CLOCK_REALTIME) / USEC_PER_SEC); - tm = localtime(&t); - if (!tm) + if (!localtime_r(&t, &tm)) return -EINVAL; - if (strftime(header_time, sizeof(header_time), "%h %e %T ", tm) <= 0) + if (strftime(header_time, sizeof(header_time), "%h %e %T ", &tm) <= 0) return -EINVAL; xsprintf(header_pid, "["PID_FMT"]: ", getpid_cached()); diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c index 9dea116722..01b8bf608d 100644 --- a/src/journal/journald-syslog.c +++ b/src/journal/journald-syslog.c @@ -117,7 +117,7 @@ void server_forward_syslog(Server *s, int priority, const char *identifier, cons header_pid[STRLEN("[]: ") + DECIMAL_STR_MAX(pid_t) + 1]; int n = 0; time_t t; - struct tm *tm; + struct tm tm; _cleanup_free_ char *ident_buf = NULL; assert(s); @@ -134,10 +134,9 @@ void server_forward_syslog(Server *s, int priority, const char *identifier, cons /* Second: timestamp */ t = tv ? tv->tv_sec : ((time_t) (now(CLOCK_REALTIME) / USEC_PER_SEC)); - tm = localtime(&t); - if (!tm) + if (!localtime_r(&t, &tm)) return; - if (strftime(header_time, sizeof(header_time), "%h %e %T ", tm) <= 0) + if (strftime(header_time, sizeof(header_time), "%h %e %T ", &tm) <= 0) return; iovec[n++] = IOVEC_MAKE_STRING(header_time); diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 5cb13bfbb8..ad662fb1cf 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -557,13 +557,13 @@ static int method_set_timezone(sd_bus_message *m, void *userdata, sd_bus_error * if (c->local_rtc) { struct timespec ts; - struct tm *tm; + struct tm tm; /* 4. Sync RTC from system clock, with the new delta */ assert_se(clock_gettime(CLOCK_REALTIME, &ts) == 0); - assert_se(tm = localtime(&ts.tv_sec)); + assert_se(localtime_r(&ts.tv_sec, &tm)); - r = clock_set_hwclock(tm); + r = clock_set_hwclock(&tm); if (r < 0) log_debug_errno(r, "Failed to sync time to hardware clock, ignoring: %m"); }