From 7a34d133c64687a655b3e75c068f36bb0d8f61f1 Mon Sep 17 00:00:00 2001 From: Michal Szczecinski Date: Fri, 28 Apr 2023 18:32:51 +0200 Subject: [PATCH] ecore_wl2_display: improved safety of ecore_wl2_display_sync. The "wl_display_sync" may return null value. In this case wl_callback_add_listener behaviour is undefined. Change-Id: Iad08537cb1dad7fc545579248f13dcdc7f063fa2 --- src/lib/ecore_wl2/ecore_wl2_display.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c b/src/lib/ecore_wl2/ecore_wl2_display.c index b1e9faf..a0639d4 100644 --- a/src/lib/ecore_wl2/ecore_wl2_display.c +++ b/src/lib/ecore_wl2/ecore_wl2_display.c @@ -1558,7 +1558,9 @@ _ecore_wl2_display_dispatch_error(Ecore_Wl2_Display *ewd) EAPI void ecore_wl2_display_sync(Ecore_Wl2_Display *display) { - struct wl_callback *cb; + //TIZEN_ONLY(20230428) Improved safety of ecore_wl2_display_sync + struct wl_callback *cb = NULL; + // int last_dpy_err; int ret; @@ -1567,6 +1569,15 @@ ecore_wl2_display_sync(Ecore_Wl2_Display *display) display->sync_ref_count++; cb = wl_display_sync(display->wl.display); + //TIZEN_ONLY(20230428) Improved safety of ecore_wl2_display_sync + if (!cb) + { + errno = wl_display_get_error(display->wl.display); + ERR("Disconnected from a wayland compositor : %s", eina_error_msg_get(errno)); + _ecore_wl2_signal_exit(); + return; + } + // wl_callback_add_listener(cb, &_tz_sync_listener, display); while (display->sync_ref_count > 0) -- 2.7.4