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