ecore_wayland: add null check to fix dereference null pointer while setting up keygrab 16/49416/1
authorGwanglim Lee <gl77.lee@samsung.com>
Tue, 13 Oct 2015 05:46:53 +0000 (14:46 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Tue, 13 Oct 2015 05:46:53 +0000 (14:46 +0900)
Change-Id: I8b1626027efec510d02ccc423099e9fcf8e6c0eb

src/lib/ecore_wayland/ecore_wl.c

index f933d94..c1616fc 100644 (file)
@@ -1079,29 +1079,32 @@ ecore_wl_window_keygrab_set(Ecore_Wl_Window *win, const char *key, int mod EINA_
         wl_display_roundtrip(_ecore_wl_disp->wl.display);
      }
 
-   if (!_ecore_wl_disp->input->xkb.keymap)
+   if (_ecore_wl_disp->input)
      {
-        int loop_count = 5;
-        INF("Wait until keymap event occurs");
-        while((!_ecore_wl_disp->input->xkb.keymap) && (loop_count > 0))
+        if (!_ecore_wl_disp->input->xkb.keymap)
           {
-             wl_display_roundtrip(_ecore_wl_disp->wl.display);
-             loop_count--;
+             int loop_count = 5;
+             INF("Wait until keymap event occurs");
+             while((!_ecore_wl_disp->input->xkb.keymap) && (loop_count > 0))
+               {
+                  wl_display_roundtrip(_ecore_wl_disp->wl.display);
+                  loop_count--;
+               }
+             if (!_ecore_wl_disp->input->xkb.keymap)
+               {
+                  ERR("Fail to keymap, conut:[%d]", loop_count);
+                  return EINA_FALSE;
+               }
+             INF("Finish keymap event");
           }
-        if (!_ecore_wl_disp->input->xkb.keymap)
+
+        if (_ecore_wl_disp->input->xkb.keymap)
+          num_keycodes = _ecore_wl_keycode_from_keysym(_ecore_wl_disp->input->xkb.keymap, keysym, &keycodes);
+        else
           {
-             ERR("Fail to keymap, conut:[%d]", loop_count);
+             WRN("Keymap is not ready");
              return EINA_FALSE;
           }
-        INF("Finish keymap event");
-     }
-
-   if (_ecore_wl_disp->input->xkb.keymap)
-     num_keycodes = _ecore_wl_keycode_from_keysym(_ecore_wl_disp->input->xkb.keymap, keysym, &keycodes);
-   else
-     {
-        WRN("Keymap is not ready");
-        return EINA_FALSE;
      }
 
    if (num_keycodes == 0)