e_comp_wl_buffer: Fix null dereference 23/303723/1
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 3 Jan 2024 05:38:30 +0000 (14:38 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 4 Jan 2024 01:22:24 +0000 (10:22 +0900)
The return value of ds_buffer_get_resource() can be null if the
wl_resource of wl_buffer has been destroyed.
This patch addresses this issue by properly checking for a null return
value and handling it accordingly.

Change-Id: I3c4afe568d2c44f051db8bc5762f10207f558f84

src/bin/e_comp_wl_buffer.c

index 0197e0c..a5f52aa 100644 (file)
@@ -168,6 +168,9 @@ _e_comp_wl_buffer_init(E_Comp_Wl_Buffer *base, struct ds_buffer *ds_buffer)
    struct wl_resource *resource;
 
    resource = ds_buffer_get_resource(ds_buffer);
+   if (!resource)
+     return EINA_FALSE;
+
    shmbuff = wl_shm_buffer_get(resource);
    if (shmbuff)
      {
@@ -263,6 +266,9 @@ _e_buffer_from_buffer(struct ds_buffer *ds_buffer)
    struct wl_listener *listener;
 
    resource = ds_buffer_get_resource(ds_buffer);
+   if (!resource)
+     return NULL;
+
    listener = wl_resource_get_destroy_listener(resource, _e_buffer_cb_resource_destroy);
    if (listener)
      return wl_container_of(listener, buffer, base.destroy_listener);