e_comp_wl_input: fix bugs in pointer constraint (memory leak, null check) 34/300134/1
authorduna.oh <duna.oh@samsung.com>
Thu, 12 Oct 2023 07:58:15 +0000 (16:58 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 17 Oct 2023 08:05:37 +0000 (17:05 +0900)
Change-Id: If82d3fb2b89cd13b3793abe75985d7f1e8e7017a

src/bin/e_comp_wl_input.c

index 200a4539c732fcbc434114ca21434f9a03c78800..f88f724073a1c94d5286a5654f21b276eaa31f34 100644 (file)
@@ -994,6 +994,9 @@ _e_comp_wl_input_cb_locked_pointer_set_cursor_position_hint(struct wl_client *cl
    E_Comp_Wl_Pointer_Constraint *constraint =
            (E_Comp_Wl_Pointer_Constraint *)wl_resource_get_user_data(resource);
 
+   if (!constraint)
+     return;
+
    constraint->hint_x_pending = surface_x;
    constraint->hint_y_pending = surface_y;
    constraint->is_hint_pending = EINA_TRUE;
@@ -1008,6 +1011,9 @@ _e_comp_wl_input_cb_locked_pointer_set_region(struct wl_client *client,
    E_Comp_Wl_Pointer_Constraint *constraint =
            (E_Comp_Wl_Pointer_Constraint *)wl_resource_get_user_data(resource);
 
+   if (!constraint)
+     return;
+
    if (region_resource)
      {
         pixman_region32_t *region = wl_resource_get_user_data(region_resource);
@@ -1096,6 +1102,7 @@ _e_comp_wl_input_cb_pointer_constraints_lock_pointer(struct wl_client *client,
    if (!constraint)
      {
         ERR("Could not create a pointer constraint.");
+        wl_resource_destroy(res);
         wl_client_post_no_memory(client);
         return;
      }