[Alarm] Replaced localtime with localtime_r.
authorPawel Andruszkiewicz <p.andruszkie@samsung.com>
Thu, 11 Jun 2015 07:33:39 +0000 (09:33 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Thu, 11 Jun 2015 08:07:00 +0000 (10:07 +0200)
Prevent CID: 438161

[Verification] TCT pass rate: 100%

Change-Id: I9011067c049332954b68c0da7aa1daa739477768
Signed-off-by: Pawel Andruszkiewicz <p.andruszkie@samsung.com>
src/alarm/alarm_manager.cc

index da1226ac12deac5711c94391fe71990f6e2ab90c..6c21b56e764bac7618185319349ec1ca1dc90069 100755 (executable)
@@ -156,29 +156,29 @@ void AlarmManager::Add(const picojson::value& args, picojson::object& out) {
 
     int period = 0;
     time_t second = seconds / 1000;
-    struct tm *start_date;
+    struct tm start_date = {0};
 
-    start_date = localtime(&second);
-    if (start_date == nullptr) {
+    tzset();
+    if (nullptr == localtime_r(&second, &start_date)) {
       LoggerE("Invalid date.");
       ReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Invalid date."), &out);
       return;
     }
 
-    mktime(start_date);
+    mktime(&start_date);
 
     char str_date[kDateSize];
 
-    snprintf(str_date, sizeof(str_date), "%d %d %d %d %d %d %d", start_date->tm_year,
-             start_date->tm_mon, start_date->tm_mday, start_date->tm_hour, start_date->tm_min,
-             start_date->tm_sec, start_date->tm_isdst);
+    snprintf(str_date, sizeof(str_date), "%d %d %d %d %d %d %d", start_date.tm_year,
+             start_date.tm_mon, start_date.tm_mday, start_date.tm_hour, start_date.tm_min,
+             start_date.tm_sec, start_date.tm_isdst);
 
     app_control_add_extra_data(app_control, kAlarmAbsoluteDateKey, str_date);
 
     int ret = 0;
     if (it_period->second.is<double>()) {
       period = static_cast<int>(it_period->second.get<double>());
-      ret = alarm_schedule_at_date(app_control, start_date, period, &alarm_id);
+      ret = alarm_schedule_at_date(app_control, &start_date, period, &alarm_id);
     } else if (it_daysOfWeek->second.is<picojson::array>()) {
       picojson::array days_of_week = it_daysOfWeek->second.get<picojson::array>();
       int repeat_value = 0;
@@ -205,10 +205,10 @@ void AlarmManager::Add(const picojson::value& args, picojson::object& out) {
           return;
         }
         ret = alarm_schedule_with_recurrence_week_flag(
-            app_control, start_date, repeat_value, &alarm_id);
+            app_control, &start_date, repeat_value, &alarm_id);
       }
     } else {
-      ret = alarm_schedule_at_date(app_control, start_date, 0, &alarm_id);
+      ret = alarm_schedule_at_date(app_control, &start_date, 0, &alarm_id);
     }
 
     if (ALARM_ERROR_NONE != ret) {