e_keyrouter: Fix return after hardkey_list NULL check 56/317556/1
authorTaeHyeon Jeong <thyeon.jeong@samsung.com>
Mon, 30 Dec 2024 02:16:35 +0000 (11:16 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 3 Jan 2025 06:58:20 +0000 (15:58 +0900)
AS-IS
- if hardkey_list is NULL, return immediately without checking the next condition.

TO-BE
- Does not return immediately when hardkey_list is NULL. Check next condition to avoid unexpected behavior.

Change-Id: I1da8d9805354cb1e03067f24afe3d734ec3c7fd2

src/bin/inputmgr/e_keyrouter.c
src/bin/inputmgr/e_keyrouter_events.c
src/bin/server/e_keyrouter_wl.c

index a1047c8fa99312eedb3cecb3a823d16c4482e22c..2e687cf5b302f9c8aa1d9b02facdc74eee0a9cab 100644 (file)
@@ -162,7 +162,7 @@ _e_keyrouter_input_thread_keygrab_print(void *data)
 {
    char *log_path = (char *)data;
    Eina_List *l, **hardkey_list;
-   Eina_List *excl_ptr_list, *or_excl_ptr_list, *top_ptr_list, *shared_ptr_list;
+   Eina_List *excl_ptr_list = NULL, *or_excl_ptr_list = NULL, *top_ptr_list = NULL, *shared_ptr_list = NULL;
    E_Keyrouter_Key_List_NodePtr kdata;
    E_Client *ec_focus;
    struct wl_resource *surface_focus;
@@ -219,20 +219,20 @@ _e_keyrouter_input_thread_keygrab_print(void *data)
           continue;
 
         hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, i, TIZEN_KEYROUTER_MODE_EXCLUSIVE);
-        EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-        excl_ptr_list = *hardkey_list;
+        if (hardkey_list)
+          excl_ptr_list = *hardkey_list;
 
         hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, i, TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE);
-        EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-        or_excl_ptr_list = *hardkey_list;
+        if (hardkey_list)
+          or_excl_ptr_list = *hardkey_list;
 
         hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, i, TIZEN_KEYROUTER_MODE_TOPMOST);
-        EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-        top_ptr_list = *hardkey_list;
+        if (hardkey_list)
+          top_ptr_list = *hardkey_list;
 
         hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, i, TIZEN_KEYROUTER_MODE_SHARED);
-        EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-        shared_ptr_list = *hardkey_list;
+        if (hardkey_list)
+          shared_ptr_list = *hardkey_list;
 
         if (!excl_ptr_list && !or_excl_ptr_list &&
             !top_ptr_list && !shared_ptr_list)
index e513f83b53829c9ab19ba3aabf9ceab2554bc96c..6fe3592c5e594a2d6c86fb33920c9f7b427d3220 100644 (file)
@@ -231,7 +231,7 @@ static void
 _e_keyrouter_send_key_events(int type, Ecore_Event_Key *ev, E_Device *dev)
 {
    E_Keyrouter_Key_List_NodePtr key_node_data;
-   Eina_List *l = NULL;
+   Eina_List *l = NULL, *pic_off_ptr_list = NULL;
    int keycode = 0;
 
    keycode = ev->keycode;
@@ -240,8 +240,8 @@ _e_keyrouter_send_key_events(int type, Ecore_Event_Key *ev, E_Device *dev)
      {
         g_rec_mutex_lock(&krt->grab_key_mutex);
         Eina_List **hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, keycode, TIZEN_KEYROUTER_MODE_PICTURE_OFF);
-        EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-        Eina_List *pic_off_ptr_list = *hardkey_list;
+        if (hardkey_list)
+          pic_off_ptr_list = *hardkey_list;
         EINA_LIST_FOREACH(pic_off_ptr_list, l, key_node_data)
           {
              if (key_node_data)
@@ -276,12 +276,13 @@ _e_keyrouter_send_key_events_release(int type, Ecore_Event_Key *ev, E_Device *de
    E_Keyrouter_Key_List_NodePtr key_node_data;
    Eina_Bool res_hook = EINA_TRUE;
    E_Keyrouter_Event_Data *key_data = NULL;
+   Eina_List *press_ptr_list = NULL;
 
    /* Deliver release  clean up pressed key list */
    g_rec_mutex_lock(&krt->grab_key_mutex);
    Eina_List **hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, ev->keycode, TIZEN_KEYROUTER_MODE_PRESSED);
-   EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-   Eina_List *press_ptr_list = *hardkey_list;
+   if (hardkey_list)
+     press_ptr_list = *hardkey_list;
    EINA_LIST_FREE(press_ptr_list, key_node_data)
      {
         if (key_node_data->focused == EINA_TRUE)
@@ -363,6 +364,9 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev, E_Device *dev)
    E_Keyrouter_Key_List_NodePtr key_node_data;
    Eina_List *l = NULL;
    Eina_List *shared_ptr_list = NULL;
+   Eina_List *excl_ptr_list = NULL;
+   Eina_List *or_excl_ptr = NULL;
+   Eina_List *top_ptr_list = NULL;
    Eina_List **hardkey_list = NULL;
 
    ec_focus = e_client_focused_get();
@@ -384,8 +388,8 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev, E_Device *dev)
 
    g_rec_mutex_lock(&krt->grab_key_mutex);
    hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, keycode, TIZEN_KEYROUTER_MODE_EXCLUSIVE);
-   EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-   Eina_List *excl_ptr_list = *hardkey_list;
+   if (hardkey_list)
+     excl_ptr_list = *hardkey_list;
    EINA_LIST_FOREACH(excl_ptr_list, l, key_node_data)
      {
         if (key_node_data)
@@ -409,8 +413,8 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev, E_Device *dev)
 
    g_rec_mutex_lock(&krt->grab_key_mutex);
    hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, keycode, TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE);
-   EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-   Eina_List *or_excl_ptr = *hardkey_list;
+   if (hardkey_list)
+     or_excl_ptr = *hardkey_list;
    EINA_LIST_FOREACH(or_excl_ptr, l, key_node_data)
      {
         if (key_node_data)
@@ -437,8 +441,8 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev, E_Device *dev)
      {
         g_rec_mutex_lock(&krt->grab_key_mutex);
         hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, keycode, TIZEN_KEYROUTER_MODE_TOPMOST);
-        EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-        Eina_List *top_ptr_list = *hardkey_list;
+        if (hardkey_list)
+          top_ptr_list = *hardkey_list;
         EINA_LIST_FOREACH(top_ptr_list, l, key_node_data)
           {
              if (key_node_data)
@@ -489,8 +493,8 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev, E_Device *dev)
 
    g_rec_mutex_lock(&krt->grab_key_mutex);
    hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, keycode, TIZEN_KEYROUTER_MODE_SHARED);
-   EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-   shared_ptr_list = *hardkey_list;
+   if (hardkey_list)
+     shared_ptr_list = *hardkey_list;
    g_rec_mutex_unlock(&krt->grab_key_mutex);
 
    if (shared_ptr_list)
@@ -509,8 +513,8 @@ need_shared:
           {
              g_rec_mutex_lock(&krt->grab_key_mutex);
              hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, keycode, TIZEN_KEYROUTER_MODE_SHARED);
-             EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-             shared_ptr_list = *hardkey_list;
+             if (hardkey_list)
+               shared_ptr_list = *hardkey_list;
              EINA_LIST_FOREACH(shared_ptr_list, l, key_node_data)
                {
                   if (key_node_data)
@@ -607,7 +611,7 @@ static Eina_Bool
 _e_keyrouter_check_top_visible_window(E_Client *ec_focus, int arr_idx)
 {
    E_Client *ec_top = NULL;
-   Eina_List *l = NULL, *l_next = NULL, **hardkey_list = NULL;
+   Eina_List *l = NULL, *l_next = NULL, **hardkey_list = NULL, *top_ptr_list = NULL;
    E_Keyrouter_Key_List_NodePtr key_node_data = NULL;
 
    ec_top = e_client_top_get();
@@ -628,8 +632,8 @@ _e_keyrouter_check_top_visible_window(E_Client *ec_focus, int arr_idx)
         /* TODO: Check this client is located inside a display boundary */
         g_rec_mutex_lock(&krt->grab_key_mutex);
         hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, arr_idx, TIZEN_KEYROUTER_MODE_TOPMOST);
-        EINA_SAFETY_ON_NULL_RETURN_VAL(hardkey_list, EINA_FALSE);
-        Eina_List *top_ptr_list = *hardkey_list;
+        if (hardkey_list)
+          top_ptr_list = *hardkey_list;
         EINA_LIST_FOREACH_SAFE(top_ptr_list, l, l_next, key_node_data)
           {
              if (key_node_data)
index 56e66ee8058bf693b570b247486bcc9cc9ed4453..a9e27007bb2d074ef33814afc9447023eff7cbc8 100644 (file)
@@ -202,8 +202,8 @@ e_keyrouter_keycancel_send(struct wl_client *client, struct wl_resource *surface
 
    g_rec_mutex_lock(&krt->grab_key_mutex);
    Eina_List **hardkey_list = e_keyrouter_hardkeys_get_list(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_PRESSED);
-   EINA_SAFETY_ON_NULL_RETURN(hardkey_list);
-   press_ptr_list = *hardkey_list;
+   if (hardkey_list)
+     press_ptr_list = *hardkey_list;
    EINA_LIST_FOREACH(press_ptr_list, l, data)
      {
         if (surface)