]> mj.ucw.cz Git - libucw.git/commitdiff
Fix localtime to localtime_r and gmtime to gmtime_r
authorMilan Rusek <mrusek@ucw.cz>
Fri, 17 Feb 2023 05:37:18 +0000 (06:37 +0100)
committerMilan Rusek <mrusek@ucw.cz>
Fri, 17 Feb 2023 05:42:33 +0000 (06:42 +0100)
ucw/log-file.c
ucw/xtypes-extra.c

index 2e7a8d26873b306b9734877ed6d2f2497303fae6..deb246a7cdc6c82b2707eb28446cb6ea537cb56b 100644 (file)
@@ -145,9 +145,11 @@ log_new_file(const char *path, uint flags)
   ls->close = file_close;
 
   time_t now = time(NULL);
-  struct tm *tm = localtime(&now);
-  ASSERT(tm);
-  do_log_switch(fs, tm);               // die()'s on errors
+  struct tm ltm;
+  if (localtime_r(&now, &ltm) == NULL) {
+    ASSERT(0);
+  }
+  do_log_switch(fs, &ltm);             // die()'s on errors
   return ls;
 }
 
@@ -155,13 +157,15 @@ int
 log_switch(void)
 {
   time_t now = time(NULL);
-  struct tm *tm = localtime(&now);
-  ASSERT(tm);
+  struct tm ltm;
+  if (localtime_r(&now, &ltm) == NULL) {
+    ASSERT(0);
+  }
 
   int switched = 0;
   for (int i=0; i < log_streams_after; i++)
     if (log_streams.ptr[i]->handler == file_handler)
-      switched |= do_log_switch((struct file_stream *) log_streams.ptr[i], tm);
+      switched |= do_log_switch((struct file_stream *) log_streams.ptr[i], &ltm);
   return switched;
 }
 
index c0c31a834ea458a46be1e793f401e4ed5bf18248..0ea28a9f758bb5f2d64c5097f603ab0f2ecbe6e0 100644 (file)
@@ -142,14 +142,17 @@ static const char *xt_timestamp_format(void *src, u32 fmt, struct mempool *pool)
 
   u64 tmp_time_u64 = *(u64*)src;
   time_t tmp_time = (time_t) tmp_time_u64;
-  struct tm t = *gmtime(&tmp_time);
+  struct tm ltm;
+  if (gmtime_r(&tmp_time, &ltm) == NULL) {
+    ASSERT(0);
+  }
   switch (fmt) {
   case XTYPE_FMT_DEFAULT:
   case XTYPE_FMT_RAW:
     sprintf(formatted_time_buf, "%"PRIu64, tmp_time_u64);
     break;
   case XTYPE_FMT_PRETTY:
-    strftime(formatted_time_buf, FORMAT_TIME_SIZE, "%F %T", &t);
+    strftime(formatted_time_buf, FORMAT_TIME_SIZE, "%F %T", &ltm);
     break;
   default:
     ASSERT(0);