From 138d4eba7b0afd2bb839a8cbedf7245e19841013 Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Tue, 14 Sep 2021 16:14:57 +0200 Subject: [PATCH] xwayland: Fix leak of xwl_screen on init MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On screen init, if any of the private type registration fails we would return FALSE without actually freeing the xwl_screen we just allocated. This is not a serious leak as failure at that point would lead to the premature termination of Xwayland at startup, but covscan complains and it's easy enough to fix. Signed-off-by: Olivier Fourdan Reviewed-by: Peter Hutterer Reviewed-by: Michel Dänzer --- hw/xwayland/xwayland-screen.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c index bb18e5c94..b39a3d2fd 100644 --- a/hw/xwayland/xwayland-screen.c +++ b/hw/xwayland/xwayland-screen.c @@ -549,10 +549,6 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv) Bool use_eglstreams = FALSE; #endif - xwl_screen = calloc(1, sizeof *xwl_screen); - if (xwl_screen == NULL) - return FALSE; - if (!dixRegisterPrivateKey(&xwl_screen_private_key, PRIVATE_SCREEN, 0)) return FALSE; if (!xwl_pixmap_init()) @@ -567,6 +563,10 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv) sizeof(struct xwl_client))) return FALSE; + xwl_screen = calloc(1, sizeof *xwl_screen); + if (xwl_screen == NULL) + return FALSE; + dixSetPrivate(&pScreen->devPrivates, &xwl_screen_private_key, xwl_screen); xwl_screen->screen = pScreen;