From 794c8e04a1e76b94422813b534066823d785e5f5 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Tue, 25 Nov 2025 00:38:10 +0200 Subject: [PATCH] glamor: handle potential NULL return from GetPictureScreenIfSet() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unlike GetPictureScreen(), GetPictureScreenIfSet() checks if the private key is registered, and returns NULL if it is not. Reported in https://gitlab.freedesktop.org/xorg/xserver/-/issues/1817: xwayland-24.1.6/redhat-linux-build/../glamor/glamor.c:926:5: warning[-Wanalyzer-null-dereference]: dereference of NULL ‘ps’ Signed-off-by: Alan Coopersmith Part-of: --- glamor/glamor.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/glamor/glamor.c b/glamor/glamor.c index ca78e282bf..1af5777fa6 100644 --- a/glamor/glamor.c +++ b/glamor/glamor.c @@ -862,23 +862,25 @@ glamor_init(ScreenPtr screen, unsigned int flags) glamor_priv->saved_procs.bitmap_to_region = screen->BitmapToRegion; screen->BitmapToRegion = glamor_bitmap_to_region; - glamor_priv->saved_procs.composite = ps->Composite; - ps->Composite = glamor_composite; + if (ps) { + glamor_priv->saved_procs.composite = ps->Composite; + ps->Composite = glamor_composite; - glamor_priv->saved_procs.trapezoids = ps->Trapezoids; - ps->Trapezoids = glamor_trapezoids; + glamor_priv->saved_procs.trapezoids = ps->Trapezoids; + ps->Trapezoids = glamor_trapezoids; - glamor_priv->saved_procs.triangles = ps->Triangles; - ps->Triangles = glamor_triangles; + glamor_priv->saved_procs.triangles = ps->Triangles; + ps->Triangles = glamor_triangles; - glamor_priv->saved_procs.addtraps = ps->AddTraps; - ps->AddTraps = glamor_add_traps; + glamor_priv->saved_procs.addtraps = ps->AddTraps; + ps->AddTraps = glamor_add_traps; - glamor_priv->saved_procs.composite_rects = ps->CompositeRects; - ps->CompositeRects = glamor_composite_rectangles; + glamor_priv->saved_procs.composite_rects = ps->CompositeRects; + ps->CompositeRects = glamor_composite_rectangles; - glamor_priv->saved_procs.glyphs = ps->Glyphs; - ps->Glyphs = glamor_composite_glyphs; + glamor_priv->saved_procs.glyphs = ps->Glyphs; + ps->Glyphs = glamor_composite_glyphs; + } glamor_init_vbo(screen);