e_xdg_shell_v6: add NULL check for pointer returned from wl_array_add() 27/233827/2
authorSung-Jin Park <sj76.park@samsung.com>
Tue, 19 May 2020 10:43:05 +0000 (19:43 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Tue, 19 May 2020 11:01:20 +0000 (20:01 +0900)
Change-Id: Ic024a759db181ffcf03dc97c58df529451e728e8
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/bin/e_xdg_shell_v6.c

index c7a962872077b7b87c34d938d535593b1e8727c7..13e14ef6fc4374fc2affb2c3f074aab033831b0e 100644 (file)
@@ -382,6 +382,7 @@ _e_xdg_toplevel_configure_send(E_Xdg_Toplevel *toplevel,
 {
    uint32_t *s;
    struct wl_array states;
+   Eina_Bool array_added = EINA_FALSE;
 
    if (!toplevel->resource) return;
 
@@ -392,21 +393,28 @@ _e_xdg_toplevel_configure_send(E_Xdg_Toplevel *toplevel,
    if (toplevel->pending.state.maximized)
      {
         s = wl_array_add(&states, sizeof(uint32_t));
+        if (!s) goto err;
+        array_added = EINA_TRUE;
         *s = ZXDG_TOPLEVEL_V6_STATE_MAXIMIZED;
      }
    if (toplevel->pending.state.fullscreen)
      {
         s = wl_array_add(&states, sizeof(uint32_t));
+        if (!s) goto err;
+        array_added = EINA_TRUE;
         *s = ZXDG_TOPLEVEL_V6_STATE_FULLSCREEN;
      }
    if (toplevel->pending.state.resizing)
      {
         s = wl_array_add(&states, sizeof(uint32_t));
+        if (!s) goto err;
+        array_added = EINA_TRUE;
         *s = ZXDG_TOPLEVEL_V6_STATE_RESIZING;
      }
    if (toplevel->pending.state.activated)
      {
         s = wl_array_add(&states, sizeof(uint32_t));
+        if (!s) goto err;
         *s = ZXDG_TOPLEVEL_V6_STATE_ACTIVATED;
      }
 
@@ -423,6 +431,12 @@ _e_xdg_toplevel_configure_send(E_Xdg_Toplevel *toplevel,
                                    &states);
 
    wl_array_release(&states);
+   return;
+
+err:
+   ERR("Failed on adding item to states !",  toplevel->base.ec);
+   if (array_added) wl_array_release(&states);
+   return;
 }
 
 static void