osaf/services/saf/ntfsv/ntfs/ntfs_evt.c |  6 +++++-
 osaf/tools/safntf/src/ntfclient.c       |  6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)


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

diff --git a/osaf/services/saf/ntfsv/ntfs/ntfs_evt.c 
b/osaf/services/saf/ntfsv/ntfs/ntfs_evt.c
--- a/osaf/services/saf/ntfsv/ntfs/ntfs_evt.c
+++ b/osaf/services/saf/ntfsv/ntfs/ntfs_evt.c
@@ -336,6 +336,7 @@ static void print_header(SaNtfNotificati
        SaTimeT totalTime;
        SaTimeT ntfTime = (SaTimeT)0;
        char time_str[24];
+       struct tm *tstamp_data, tm_info;
 
        /* Event type */
        TRACE_1("eventType = %d", (int)*notificationHeader->eventType);
@@ -355,7 +356,10 @@ static void print_header(SaNtfNotificati
        ntfTime = *notificationHeader->eventTime;
 
        totalTime = (ntfTime / (SaTimeT)SA_TIME_ONE_SECOND);
-       (void)strftime(time_str, sizeof(time_str), "%d-%m-%Y %T", 
localtime((const time_t *)&totalTime));
+       tstamp_data = localtime_r((const time_t *)&totalTime, &tm_info);
+       osafassert(tstamp_data);
+       
+       (void)strftime(time_str, sizeof(time_str), "%d-%m-%Y %T", tstamp_data);
 
        TRACE_1("eventTime = %lld = %s\n", (SaTimeT)ntfTime, time_str);
 
diff --git a/osaf/tools/safntf/src/ntfclient.c 
b/osaf/tools/safntf/src/ntfclient.c
--- a/osaf/tools/safntf/src/ntfclient.c
+++ b/osaf/tools/safntf/src/ntfclient.c
@@ -748,10 +748,14 @@ static char *event_time(SaTimeT eventTim
 {
        time_t time_in_secs;
        static char time_str[32];
+       struct tm *tstamp_data, tm_info;
 
        time_in_secs = (eventTime / (SaTimeT) SA_TIME_ONE_SECOND);
+       tstamp_data = localtime_r(&time_in_secs, &tm_info);
+       osafassert(tstamp_data);
+
        (void)strftime(time_str, sizeof(time_str), "%b %e %k:%M:%S",
-                      localtime(&time_in_secs));
+                      tstamp_data);
 
        return time_str;
 }

------------------------------------------------------------------------------
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