tree-wide: use localtime_r() instead of localtime()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 25 Jun 2018 17:55:25 +0000 (02:55 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 26 Jun 2018 05:26:39 +0000 (14:26 +0900)
Follow-up for e46acb7950a9f07ac60d772309de842c444ad2bd.

src/basic/clock-util.c
src/basic/log.c
src/journal/journald-syslog.c
src/timedate/timedated.c

index 3ea016a..8555cc7 100644 (file)
@@ -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 */
index 48c094b..f8ef751 100644 (file)
@@ -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());
index 9dea116..01b8bf6 100644 (file)
@@ -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);
 
index 5cb13bf..ad662fb 100644 (file)
@@ -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");
         }