From 906079235454d4def0b69aa21a628bd618d3b270 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 13 May 2025 20:10:32 +0200 Subject: [PATCH] (!1975) glamor: protect from NULL return of GetPictureScreenIfSet() GetPictureScreenIfSet() is designed that NULL can be returned. Even though it should not happen in this particular case, better be prepared for that, instead of just segfault'ing. Signed-off-by: Enrico Weigelt, metux IT consult --- glamor/glamor.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/glamor/glamor.c b/glamor/glamor.c index 04bb04ba1..0f6a84617 100644 --- a/glamor/glamor.c +++ b/glamor/glamor.c @@ -905,7 +905,6 @@ glamor_close_screen(ScreenPtr screen) { glamor_screen_private *glamor_priv; PixmapPtr screen_pixmap; - PictureScreenPtr ps = GetPictureScreenIfSet(screen); glamor_priv = glamor_get_screen_private(screen); glamor_sync_close(screen); @@ -923,11 +922,14 @@ glamor_close_screen(ScreenPtr screen) screen->BitmapToRegion = glamor_priv->saved_procs.bitmap_to_region; screen->BlockHandler = glamor_priv->saved_procs.block_handler; - ps->Composite = glamor_priv->saved_procs.composite; - ps->Trapezoids = glamor_priv->saved_procs.trapezoids; - ps->Triangles = glamor_priv->saved_procs.triangles; - ps->CompositeRects = glamor_priv->saved_procs.composite_rects; - ps->Glyphs = glamor_priv->saved_procs.glyphs; + PictureScreenPtr ps = GetPictureScreenIfSet(screen); + if (ps) { + ps->Composite = glamor_priv->saved_procs.composite; + ps->Trapezoids = glamor_priv->saved_procs.trapezoids; + ps->Triangles = glamor_priv->saved_procs.triangles; + ps->CompositeRects = glamor_priv->saved_procs.composite_rects; + ps->Glyphs = glamor_priv->saved_procs.glyphs; + } screen_pixmap = screen->GetScreenPixmap(screen); glamor_pixmap_destroy_fbo(screen_pixmap);