[sr-dev] git:master:9b7a8f90: core: replace glibc time function calls with the thread-safe versions
Henning Westerholt
hw at skalatan.de
Fri Sep 20 00:04:57 CEST 2019
Module: kamailio
Branch: master
Commit: 9b7a8f90742ab03735c3c9f4fe3053d1f9f6fa35
URL: https://github.com/kamailio/kamailio/commit/9b7a8f90742ab03735c3c9f4fe3053d1f9f6fa35
Author: Henning Westerholt <hw at skalatan.de>
Committer: Henning Westerholt <hw at skalatan.de>
Date: 2019-09-19T23:54:59+02:00
core: replace glibc time function calls with the thread-safe versions
- replace glibc time function calls with the thread-safe versions, to prevent
race conditions from multi-process / multi-threaded access
- used in different utility functions which are used from core and modules
- trivial change, only the respective variable types were changed
---
Modified: src/core/ut.c
---
Diff: https://github.com/kamailio/kamailio/commit/9b7a8f90742ab03735c3c9f4fe3053d1f9f6fa35.diff
Patch: https://github.com/kamailio/kamailio/commit/9b7a8f90742ab03735c3c9f4fe3053d1f9f6fa35.patch
---
diff --git a/src/core/ut.c b/src/core/ut.c
index 5ee8f34db1..90b01d1026 100644
--- a/src/core/ut.c
+++ b/src/core/ut.c
@@ -99,7 +99,7 @@ int group2gid(int* gid, char* group)
time_t _timegm(struct tm* t)
{
time_t tl, tb;
- struct tm* tg;
+ struct tm tg;
t->tm_isdst = 0;
tl = mktime(t);
@@ -112,12 +112,12 @@ time_t _timegm(struct tm* t)
tl += 3600;
}
- tg = gmtime(&tl);
- tg->tm_isdst = 0;
- tb = mktime(tg);
+ gmtime_r(&tl, &tg);
+ tg.tm_isdst = 0;
+ tb = mktime(&tg);
if (tb == -1) {
- tg->tm_hour--;
- tb = mktime (tg);
+ tg.tm_hour--;
+ tb = mktime (&tg);
if (tb == -1) {
return -1; /* can't deal with output from gmtime */
}
@@ -130,22 +130,22 @@ time_t _timegm(struct tm* t)
/* Convert time_t value that is relative to local timezone to UTC */
time_t local2utc(time_t in)
{
- struct tm* tt;
- tt = gmtime(&in);
- tt->tm_isdst = -1;
- return mktime(tt);
+ struct tm tt;
+ gmtime_r(&in, &tt);
+ tt.tm_isdst = -1;
+ return mktime(&tt);
}
/* Convert time_t value in UTC to to value relative to local time zone */
time_t utc2local(time_t in)
{
- struct tm* tt;
- tt = localtime(&in);
+ struct tm tt;
+ localtime_r(&in, &tt);
#ifdef HAVE_TIMEGM
- return timegm(tt);
+ return timegm(&tt);
#else
- return _timegm(tt);
+ return _timegm(&tt);
#endif
}
More information about the sr-dev
mailing list