summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/basic/clock-util.c6
-rw-r--r--src/basic/log.c7
-rw-r--r--src/journal/journald-syslog.c7
-rw-r--r--src/timedate/timedated.c6
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");
}