e_keyrouter: check validation of key when unsetting keygrab 39/297339/1 accepted/tizen/unified/20230818.054611
authorduna.oh <duna.oh@samsung.com>
Wed, 16 Aug 2023 10:56:27 +0000 (19:56 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 17 Aug 2023 05:31:58 +0000 (14:31 +0900)
Change-Id: Ibe190b58eee3b85da41f6d689aee8712884ac721

src/bin/e_keyrouter_list.c

index f64f1289ce19d58e1f27743748be8382d6671128..bf99aa357b17fe5fce856ecf80f9bbcfb3522a6c 100644 (file)
@@ -473,7 +473,7 @@ e_keyrouter_keygrab_set(struct wl_client *client, struct wl_resource *surface, i
    /* Check the given key range */
    if (krt->max_tizen_hwkeys < key)
      {
-        KLWRN("Invalid range of key ! (keycode:%d)", key);
+        KLWRN("Invalid range of key ! (keycode:%d) maximum value(%d)", key, krt->max_tizen_hwkeys);
         return TIZEN_KEYROUTER_ERROR_INVALID_KEY;
      }
 
@@ -481,7 +481,7 @@ e_keyrouter_keygrab_set(struct wl_client *client, struct wl_resource *surface, i
     * Only key listed in Tizen key layout file can be grabbed. */
    if (0 == krt->HardKeys[key].keycode)
      {
-        KLWRN("Invalid key ! Disabled to grab ! (keycode:%d)", key);
+        KLWRN("Invalid key ! Disabled to set keygrab ! (keycode:%d)", key);
         return TIZEN_KEYROUTER_ERROR_INVALID_KEY;
      }
 
@@ -494,6 +494,22 @@ e_keyrouter_keygrab_set(struct wl_client *client, struct wl_resource *surface, i
 int
 e_keyrouter_keygrab_unset(struct wl_client *client, struct wl_resource *surface, int key)
 {
+
+   /* Check the given key range */
+   if (krt->max_tizen_hwkeys < key)
+     {
+        KLWRN("Invalid range of key ! (keycode:%d) maximum value(%d)", key, krt->max_tizen_hwkeys);
+        return TIZEN_KEYROUTER_ERROR_INVALID_KEY;
+     }
+
+   /* Check whether the key can be unset or not !
+    * Only key listed in Tizen key layout file can be unset. */
+   if (0 == krt->HardKeys[key].keycode)
+     {
+        KLWRN("Invalid key ! Disabled to unset keygrab! (keycode:%d)", key);
+        return TIZEN_KEYROUTER_ERROR_INVALID_KEY;
+     }
+
    /* Ungrab top position grabs first. This grab mode do not need privilege */
    if (!surface)
      e_keyrouter_find_and_remove_client_from_list(NULL, client, key, TIZEN_KEYROUTER_MODE_TOPMOST);