Fix static analysis issue 47/283047/2
authorInkyun Kil <inkyun.kil@samsung.com>
Mon, 17 Oct 2022 07:06:26 +0000 (16:06 +0900)
committerInkyun Kil <inkyun.kil@samsung.com>
Mon, 17 Oct 2022 08:55:02 +0000 (17:55 +0900)
- integer overflow
- casting double to long

Change-Id: Iee9c6140e29f149262e0e7a9a536825ca1ceddcc
Signed-off-by: Inkyun Kil <inkyun.kil@samsung.com>
server/alarm-manager.c

index 21d6707..cf9b707 100644 (file)
@@ -607,7 +607,7 @@ static void __alarm_update_due_time_of_all_items_in_list(time_t new_time, double
        is_time_changed = true;
 
        if (periodic_alarm_standard_time != 0)
-               periodic_alarm_standard_time += diff_time;
+               periodic_alarm_standard_time += (time_t)diff_time;
 
        tzset();
        for (iter = alarm_context.alarms; iter != NULL; iter = g_slist_next(iter)) {
@@ -624,12 +624,12 @@ static void __alarm_update_due_time_of_all_items_in_list(time_t new_time, double
                                        continue;
                                }
 
-                               if (entry->due_time + diff_time < diff_time) {
+                               if (entry->due_time + (time_t)diff_time < (time_t)diff_time) {
                                        LOGE("time_t OVERFLOW!! %ld  %f id %d",
                                                entry->due_time, diff_time, entry->alarm_id);
                                        continue;
                                }
-                               entry->due_time += diff_time;
+                               entry->due_time += (time_t)diff_time;
                                entry->base_info.reserved_info = new_time;
 
                        } else {
@@ -644,12 +644,12 @@ static void __alarm_update_due_time_of_all_items_in_list(time_t new_time, double
                                                ctime(&entry->due_time), entry->due_time,
                                                base_info->mode.u_interval.interval);
                                } else {
-                                       if (entry->due_time + diff_time < diff_time) {
+                                       if (entry->due_time + (time_t)diff_time < (time_t)diff_time) {
                                                LOGE("time_t OVERFLOW!! %ld  %f id %d",
                                                        entry->due_time, diff_time, entry->alarm_id);
                                                continue;
                                        }
-                                       entry->due_time += diff_time;
+                                       entry->due_time += (time_t)diff_time;
                                }
                        }
 
@@ -669,7 +669,7 @@ static void __alarm_update_due_time_of_all_items_in_list(time_t new_time, double
                                entry->start = entry->due_time;
 
                        if (entry->end != 0 && is_rtc_reset == false) {
-                               entry->end += diff_time;
+                               entry->end += (time_t)diff_time;
                                p_time = localtime_r(&entry->end, &due_time_result);
                                if (p_time != NULL) {
                                        end->year = p_time->tm_year + 1900;
@@ -2589,7 +2589,7 @@ int alarm_manager_alarm_create_periodic(GVariant *parameters, uid_t uid,
        } else {
                base_info.mode.repeat = ALARM_REPEAT_MODE_REPEAT;
                if (is_ref)
-                       base_info.mode.u_interval.interval = interval * 60;
+                       base_info.mode.u_interval.interval = (time_t)interval * 60;
                else
                        base_info.mode.u_interval.interval = __get_proper_interval(interval * 60);
        }