Fix stack-buffer-overflow 52/275452/1
authorSangyoon Jang <jeremy.jang@samsung.com>
Wed, 25 May 2022 05:02:37 +0000 (14:02 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Wed, 25 May 2022 05:02:37 +0000 (14:02 +0900)
gsize is unsigned long.

Change-Id: Idfc2f82741dea15cd36a11625bc215599491fc75
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
server/alarm-manager.c

index 9b62aba84d59fd06721f960c2410a7bd2975b6e9..feb3c85a69aa88e3c256f10bb2c5cfa6aaaaae67 100644 (file)
@@ -126,7 +126,7 @@ static void __initialize_noti();
 static gboolean __alarm_expired_directly(gpointer user_data);
 
 void _release_alarm_info_t(__alarm_info_t *entry);
-static notification_h __get_notification(guchar *data, int datalen);
+static notification_h __get_notification(guchar *data, gsize datalen);
 static void __free_cached_value(gpointer data);
 
 static bool __get_caller_unique_name(int pid, char *unique_name, int size, bool *is_app, uid_t uid)
@@ -996,13 +996,13 @@ static char *__create_new_noti_data(char *noti_data, pid_t pid, uid_t uid)
 {
        GVariant *noti_gv;
        guchar *decoded_data;
-       int decoded_datalen;
+       gsize decoded_datalen;
        notification_h noti = NULL;
        char *new_noti_data = NULL;
        guchar* data = NULL;
        int datalen;
 
-       decoded_data = g_base64_decode(noti_data, (gsize *)&decoded_datalen);
+       decoded_data = g_base64_decode(noti_data, &decoded_datalen);
        if (decoded_data == NULL)
                return NULL;
 
@@ -1290,7 +1290,7 @@ static int __find_login_user(uid_t *uid)
        return -1;
 }
 
-static notification_h __get_notification(guchar *data, int datalen)
+static notification_h __get_notification(guchar *data, gsize datalen)
 {
        int ret;
        GVariant *noti_gv = NULL;
@@ -1338,13 +1338,12 @@ static notification_h __get_notification(guchar *data, int datalen)
 static void __expire_notification(__alarm_info_t *alarm_info)
 {
        int ret;
-       int datalen;
+       gsize datalen;
        notification_h noti;
        guchar *noti_data;
        int expire_mode = ALARM_EXPIRE_MODE_NORMAL;
 
-       noti_data = g_base64_decode(alarm_info->noti,
-                       (gsize *)&datalen);
+       noti_data = g_base64_decode(alarm_info->noti, &datalen);
        if (!noti_data) {
                LOGE("Failed to decode noti data");
                return;