osaf/libs/core/common/include/logtrace.h |  2 +-
 osaf/libs/core/common/logtrace.c         |  6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)


localtime is not thread safe and it can(has) cause crashes in services
that are multi threaded.

diff --git a/osaf/libs/core/common/include/logtrace.h 
b/osaf/libs/core/common/include/logtrace.h
--- a/osaf/libs/core/common/include/logtrace.h
+++ b/osaf/libs/core/common/include/logtrace.h
@@ -34,7 +34,7 @@
 #define LOGTRACE_H
 
 #include <syslog.h>
-
+#include <ncsgl_defs.h>
 #ifdef  __cplusplus
 extern "C" {
 #endif
diff --git a/osaf/libs/core/common/logtrace.c b/osaf/libs/core/common/logtrace.c
--- a/osaf/libs/core/common/logtrace.c
+++ b/osaf/libs/core/common/logtrace.c
@@ -87,12 +87,16 @@ static void output(const char *file, uns
        struct timeval tv;
        char preamble[512];
        char log_string[1024];
+       struct tm *tstamp_data, tm_info;
 
        assert(priority <= LOG_DEBUG && category < CAT_MAX);
 
        /* Create a nice syslog looking date string */
        gettimeofday(&tv, NULL);
-       strftime(log_string, sizeof(log_string), "%b %e %k:%M:%S", 
localtime(&tv.tv_sec));
+       tstamp_data = localtime_r(&tv.tv_sec, &tm_info);
+       osafassert(tstamp_data);
+       
+       strftime(log_string, sizeof(log_string), "%b %e %k:%M:%S", tstamp_data);
        i = snprintf(preamble, sizeof(preamble), "%s.%06ld %s ", log_string, 
tv.tv_usec, ident);
 
        snprintf(&preamble[i], sizeof(preamble) - i, "[%d:%s:%04u] %s %s",

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to