test
authorJunkyeong Kim <jk0430.kim@samsung.com>
Wed, 23 Aug 2023 10:54:24 +0000 (19:54 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Wed, 23 Aug 2023 10:54:24 +0000 (19:54 +0900)
src/cbhm.c

index 3182a6cd7e3c29b12e8ae983501dc271d32063bf..99165e8cc3c8b21136edf8d0d06992ee55414782 100644 (file)
@@ -328,6 +328,7 @@ _cbhm_receive_data(Cbhm_Glib_Info *info)
        Cbhm_Received_Data *received_data;
        char buffer[255];
        int len, old_len;
+       void *data;
 
        if (!info) return;
        if (!info->data_device_mgr) return;
@@ -357,9 +358,18 @@ _cbhm_receive_data(Cbhm_Glib_Info *info)
                old_len = received_data->len;
 
                received_data->len += len;
-               received_data->data = realloc(received_data->data, received_data->len);
-               
-               memcpy(((char *)received_data->data) + old_len, buffer, len);
+               data = realloc(received_data->data, received_data->len);
+               if (data) {
+                       received_data->data = data;
+                       memcpy(((char *)received_data->data) + old_len, buffer, len);
+               } else {
+                       ERR("[CBHM]_cbhm_receive_data: realloc fail\n");
+                       if (received_data->data != NULL) {
+                               free(received_data->data);
+                               received_data->data = NULL;
+                       }
+                       goto receive_data_done;
+               }
 
                if (len < 255) break;
        }
@@ -369,8 +379,18 @@ _cbhm_receive_data(Cbhm_Glib_Info *info)
                buffer[0] = '\0';
                old_len = received_data->len;
                received_data->len += 1;
-               received_data->data = realloc(received_data->data, received_data->len);
-               memcpy(((char *)received_data->data) + old_len, buffer, 1);
+               data = realloc(received_data->data, received_data->len);
+               if (data) {
+                       received_data->data = data;
+                       memcpy(((char *)received_data->data) + old_len, buffer, 1);
+               } else {
+                       ERR("[CBHM]_cbhm_receive_data: realloc fail\n");
+                       if (received_data->data != NULL) {
+                               free(received_data->data);
+                               received_data->data = NULL;
+                       }
+                       goto receive_data_done;
+               }
        }
        INF("[CBHM]_cbhm_receive_data: (%d) %s\n", received_data->len, (char *)received_data->data);
 
@@ -391,8 +411,10 @@ _data_offer_offer(void *data, struct wl_data_offer *wl_data_offer, const char *t
 
        info = data;
        if (!info) return;
+       if (!info->cbhm_data_offer) return;
+
        cbhm_data_offer = info->cbhm_data_offer;
-       if (cbhm_data_offer == NULL || cbhm_data_offer->data_offer != wl_data_offer) {
+       if (cbhm_data_offer->data_offer != wl_data_offer) {
                ERR("[CBHM]_data_offer_offer : offer data is mismatch(saved:%p, current:%p)\n", cbhm_data_offer->data_offer, wl_data_offer);
                return;
        }
@@ -793,7 +815,7 @@ static gboolean
 cbhm_gsource_dispatch(GSource *source, GSourceFunc cb, gpointer data)
 {
        Cbhm_Glib_Info *info = (Cbhm_Glib_Info *)source;
-       int wl_ret;
+       int wl_ret = 0;
 
        if (g_source_is_destroyed(source)) {
                ERR("[CBHM]cbhm_gsource_dispatch: display source(%p) already destroyed\n", source);